先放一张表,可以看成是二维数组

行(列)索引 索引0 索引1 索引2 索引3
索引0 0 1 2 3
索引1 4 5 6 7
索引2 8 9 10 11
索引3 12 13 14 15

看一下下面例子代码:

针对0维(输出为行形式)

  1. >>> import torch as t
  2. >>> a = t.arange(0,16).view(4,4)
  3. >>> a
  4. tensor([[ 0, 1, 2, 3],
  5. [ 4, 5, 6, 7],
  6. [ 8, 9, 10, 11],
  7. [12, 13, 14, 15]])
  8. #选取对角线的元素
  9. >>> index = t.LongTensor([[0,1,2,3]])
  10. >>> a.gather(0,index)
  11. tensor([[ 0, 5, 10, 15]])

如何理解结果呢?其实很简单,就是a.gather(0,index)中第一个0已经表明输出结果是行形式(0维),如果第一个是1说明输出结果是列形式(1维),然后按照index = tensor([[0, 1, 2, 3]])顺序作用在行上索引依次为0,1,2,3

  • a[0][0] = 0
  • a[1][1] = 5
  • a[2][2] = 10
  • a[3][3] = 15

针对0维

  1. # 选取反对角线上的元素,注意与上面的不同
  2. >>> index2 = t.LongTensor([[3,2,1,0]])
  3. >>> a.gather(0,index2)
  4. tensor([[12, 9, 6, 3]])

如何理解结果呢?同理,按照index = tensor([[3, 2, 1, 0]])顺序作用在行上索引依次为3,2,1,0:

  • a[3][0] = 12
  • a[2][1] = 9
  • a[1][2] = 6
  • a[0][3] = 3

针对1维(输出为列形式)

选取对角线的元素

  1. >>> index3 = t.LongTensor([[0,1,2,3]]).t()
  2. >>> a.gather(1,index3)
  3. tensor([[ 0],
  4. [ 5],
  5. [10],
  6. [15]])

如何理解结果呢?同理,按照index = tensor([[0, 1, 2, 3]])顺序作用在列上索引依次为0,1,2,3:

  • a[0][0] = 0
  • a[1][1] = 5
  • a[2][2] = 10
  • a[3][3] = 15

针对1维

选取反对角线上的元素

  1. >>> index4 = t.LongTensor([[3,2,1,0]]).t()
  2. >>> a.gather(1,index4)
  3. tensor([[ 3],
  4. [ 6],
  5. [ 9],
  6. [12]])

如何理解结果呢?同理,按照index = tensor([[3, 2, 1, 0]])顺序作用在列上索引依次为3,2,1,0:

  • a[0][3] = 3
  • a[1][2] = 6
  • a[2][1] = 9
  • a[3][0] = 12

Pytorch的gather用法理解的更多相关文章

  1. CSS3用法理解

    这里只概括了我对CSS3各属性的用法理解.具体每个属性的值,以及例子,看这里 (竟然每篇文章不能低于200字,不能低于200字不能低于200字不能低于200字不能低于200字....请无视)

  2. oracle中start with和connect by的用法理解

    转自:https://blog.csdn.net/qq_29274091/article/details/72627350 Oracle中start with和connect by 用法理解转自:ht ...

  3. Pytorch 一些函数用法

    PyTorch中view的用法:https://blog.csdn.net/york1996/article/details/81949843 max用法 import torch d=torch.T ...

  4. 结合promise对原生fetch的两个then用法理解

    前言:该问题是由于看到fetch的then方法的使用,产生的疑问,在深入了解并记录对promise的个人理解 首先看一下fetch请求使用案例: 案例效果:点击页面按钮,请求当前目录下的arr.txt ...

  5. pytorch lstm crf 代码理解 重点

    好久没有写博客了,这一次就将最近看的pytorch 教程中的lstm+crf的一些心得与困惑记录下来. 原文 PyTorch Tutorials 参考了很多其他大神的博客,https://blog.c ...

  6. pytorch lstm crf 代码理解

    好久没有写博客了,这一次就将最近看的pytorch 教程中的lstm+crf的一些心得与困惑记录下来. 原文 PyTorch Tutorials 参考了很多其他大神的博客,https://blog.c ...

  7. pytorch Dataset Dataloader用法(一个示例)

    from torch.utils.data import Dataset from torch.utils.data import DataLoader from torch.utils.data i ...

  8. Python的with用法理解

    Python的with理解 标签(空格分隔): Python with做为一种上下文管理器,在Python中的作用可以简单的理解为是用来代替try...except...finally的处理流程. w ...

  9. SQL语句 - MERGE INTO 、Cross/Outer Apply用法理解

    MERGE INTO 语法: MERGE INTO table_name alias1 USING (table|view|sub_query) alias2ON (join condition) W ...

随机推荐

  1. SVN服务器迁移,SVN版本库迁移(网络copy)

    做法: 准备:系统平台:windows server 2003 版本库:vos 源服务器:10.10.13.48 目标服务器:10.10.13.129源SVN版本库的path: D:\svn\vos要 ...

  2. Classification week6: precision & recall 笔记

    华盛顿大学 machine learning :classification  笔记 第6周 precision & recall 1.accuracy 局限性 我们习惯用 accuracy ...

  3. EditText相关属性设置

    1.默认不弹出软件盘 在AndroidManifest.xml设置: <activity            android:name="com.demo.Activity" ...

  4. linux下jmeter使用帮助

    1.linux下jmeter使用方法 例:jmeter -n -t test1.jmx -l logfile1.jtl -H 192.168.1.1 -P 8080 -h 帮助 -> 打印出有用 ...

  5. PHP中导出Excel,将数据以Excel形式导出

    现在,很多地方都需要导出数据,这里说一种简单的方法将数据以Excel的形式导出,方法如下: <?php date_default_timezone_set('PRC');//设置时区 /*设置h ...

  6. Javascript中的函数中的this值

    看下面这段代码会在控制台上输出什么内容? <script> var url="fang.com"; var obj={ url:"soufun.com&quo ...

  7. 在Visual Studio 2015的Cordova项目中使用Gulp

    之前一直是在vs 2013中使用Cordova来开发移动app(目前有iPad版/iPhone版/安卓版),准备到下一个milestone的时候升级到2015,这两天在尝试各种东西. 2015中的co ...

  8. HTML随意记录

    HTML特殊符号对照表: http://www.cnblogs.com/knowledgesea/archive/2013/07/24/3210703.html

  9. 巨蟒python全栈开发django2:初识django

    今日内容大纲: 1.起飞版web框架 2.自定制框架的流程 3.jinja2模板渲染初识 4.MVC&&MTV 5.django版本介绍及django安装 6.django初识(一些操 ...

  10. 20160916-3:mysql主从复制

    一.什么是主从复制 将一个数据库节点的数据拷贝到一个或多个数据库节点(主节点—>从节点) 二.主从复制的原理 [简述]:将主节点上的变更操作存储到binlog,从节点建立了到主节点的复制关系后, ...