浅谈Pytorch中的torch.gather函数的含义


Posted in Python onAugust 18, 2019

pytorch中的gather函数

pytorch比tensorflow更加编程友好,所以准备用pytorch试着做最近要做的一些实验。

立个flag开始学习pytorch,新开一个分类整理学习pytorch中的一些踩到的泥坑。

浅谈Pytorch中的torch.gather函数的含义

今天刚开始接触,读了一下documentation,写一个一开始每太搞懂的函数gather

b = torch.Tensor([[1,2,3],[4,5,6]])
print b
index_1 = torch.LongTensor([[0,1],[2,0]])
index_2 = torch.LongTensor([[0,1,1],[0,0,0]])
print torch.gather(b, dim=1, index=index_1)
print torch.gather(b, dim=0, index=index_2)

观察它的输出结果:

1 2 3
 4 5 6
[torch.FloatTensor of size 2x3]


 1 2
 6 4
[torch.FloatTensor of size 2x2]


 1 5 6
 1 2 3
[torch.FloatTensor of size 2x3]

这里是官方文档的解释

torch.gather(input, dim, index, out=None) → Tensor

 Gathers values along an axis specified by dim.

 For a 3-D tensor the output is specified by:

 out[i][j][k] = input[index[i][j][k]][j][k] # dim=0
 out[i][j][k] = input[i][index[i][j][k]][k] # dim=1
 out[i][j][k] = input[i][j][index[i][j][k]] # dim=2

 Parameters: 

  input (Tensor) ? The source tensor
  dim (int) ? The axis along which to index
  index (LongTensor) ? The indices of elements to gather
  out (Tensor, optional) ? Destination tensor

 Example:

 >>> t = torch.Tensor([[1,2],[3,4]])
 >>> torch.gather(t, 1, torch.LongTensor([[0,0],[1,0]]))
  1 1
  4 3
 [torch.FloatTensor of size 2x2]

可以看出,gather的作用是这样的,index实际上是索引,具体是行还是列的索引要看前面dim 的指定,比如对于我们的栗子,【1,2,3;4,5,6,】,指定dim=1,也就是横向,那么索引就是列号。index的大小就是输出的大小,所以比如index是【1,0;0,0】,那么看index第一行,1列指的是2, 0列指的是1,同理,第二行为4,4 。这样就输入为【2,1;4,4】,参考这样的解释看上面的输出结果,即可理解gather的含义。

gather在one-hot为输出的多分类问题中,可以把最大值坐标作为index传进去,然后提取到每一行的正确预测结果,这也是gather可能的一个作用。

以上这篇浅谈Pytorch中的torch.gather函数的含义就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
使用grappelli为django admin后台添加模板
Nov 18 Python
python继承和抽象类的实现方法
Jan 14 Python
Python初学时购物车程序练习实例(推荐)
Aug 08 Python
Anaconda下安装mysql-python的包实例
Jun 11 Python
python flask解析json数据不完整的解决方法
May 26 Python
Python3多目标赋值及共享引用注意事项
May 27 Python
解决pyshp UnicodeDecodeError的问题
Dec 06 Python
基于keras输出中间层结果的2种实现方式
Jan 24 Python
Python Django form 组件动态从数据库取choices数据实例
May 19 Python
详解基于python的图像Gabor变换及特征提取
Oct 26 Python
浅析Python 中的 WSGI 接口和 WSGI 服务的运行
Dec 09 Python
聊聊python在linux下与windows下导入模块的区别说明
Mar 03 Python
PyTorch中Tensor的维度变换实现
Aug 18 #Python
PyTorch中Tensor的拼接与拆分的实现
Aug 18 #Python
详解PyTorch中Tensor的高阶操作
Aug 18 #Python
浅析PyTorch中nn.Linear的使用
Aug 18 #Python
Pytorch实现GoogLeNet的方法
Aug 18 #Python
PyTorch之图像和Tensor填充的实例
Aug 18 #Python
Pytorch Tensor的索引与切片例子
Aug 18 #Python
You might like
实用函数2
2007/11/08 PHP
编写安全 PHP应用程序的七个习惯深入分析
2013/06/08 PHP
php实现读取手机客户端浏览器的类
2015/01/09 PHP
PHP中使用Imagick读取pdf并生成png缩略图实例
2015/01/21 PHP
Yii2 rbac权限控制操作步骤实例教程
2016/04/29 PHP
php自定义扩展名获取函数示例
2016/12/12 PHP
splice slice区别
2006/10/09 Javascript
仿校内登陆框,精美,给那些很厉害但是没有设计天才的程序员
2008/11/24 Javascript
Ext javascript建立超链接,进行事件处理的实现方法
2009/03/22 Javascript
JavaScript中的一些定位属性[图解]
2010/07/14 Javascript
jquery文档操作wrap()方法实例简述
2015/01/10 Javascript
javascript数组输出的两种方式
2015/01/13 Javascript
js 判断登录界面的账号密码是否为空
2017/02/08 Javascript
Bootstrap入门教程一Hello Bootstrap初识
2017/03/02 Javascript
仿淘宝JSsearch搜索下拉深度用法
2018/01/15 Javascript
Vue2.0点击切换类名改变样式的方法
2018/08/22 Javascript
vue自定义组件实现双向绑定
2021/01/13 Vue.js
使用Python编写一个模仿CPU工作的程序
2015/04/16 Python
约瑟夫问题的Python和C++求解方法
2015/08/20 Python
Django框架使用mysql视图操作示例
2019/05/15 Python
使用Pycharm(Python工具)新建项目及创建Python文件的教程
2020/04/26 Python
python中plt.imshow与cv2.imshow显示颜色问题
2020/07/16 Python
canvas如何实现多张图片编辑的图片编辑器
2020/03/10 HTML / CSS
链表面试题-一个链表的结点结构
2015/05/04 面试题
.NET remoting的两种通道是什么
2016/05/31 面试题
大学生毕业自荐信
2013/10/10 职场文书
电子商务专业个人的自我评价
2013/11/19 职场文书
秘书行业自我鉴定范文
2013/12/30 职场文书
工业学校毕业生自荐书
2014/01/03 职场文书
医院总经理岗位职责
2014/02/04 职场文书
上课迟到检讨书范文
2015/05/06 职场文书
2015年幼儿园中班下学期工作总结
2015/05/22 职场文书
2015年图书馆个人工作总结
2015/05/26 职场文书
奥巴马开学演讲观后感
2015/06/12 职场文书
2019中秋节祝福语大全,提前收藏啦
2019/09/10 职场文书
小米11和iphone12哪个值得买?小米11对比iphone12评测
2021/04/21 数码科技