浅谈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 相关文章推荐
paramiko模块安装和使用(远程登录服务器)
Jan 27 Python
利用Python绘制MySQL数据图实现数据可视化
Mar 30 Python
Python入门之后再看点什么好?
Mar 05 Python
PyQt4实现下拉菜单可供选择并打印出来
Apr 20 Python
python sys,os,time模块的使用(包括时间格式的各种转换)
Apr 27 Python
python matplotlib实现双Y轴的实例
Feb 12 Python
Python中最好用的命令行参数解析工具(argparse)
Aug 23 Python
使用python的pyplot绘制函数实例
Feb 13 Python
python中sklearn的pipeline模块实例详解
May 21 Python
python如何运行js语句
Sep 09 Python
详解java调用python的几种用法(看这篇就够了)
Dec 10 Python
如何使用Python进行PDF图片识别OCR
Jan 22 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
20个2014年最优秀的PHP框架回顾
2014/10/22 PHP
PHP has encountered a Stack overflow问题解决方法
2014/11/03 PHP
php查看当前Session的ID实例
2015/03/16 PHP
PHP单例模式是什么 php实现单例模式的方法
2016/05/14 PHP
ASP Json Parser修正版
2009/12/06 Javascript
jquery中:input和input的区别分析
2011/07/13 Javascript
jquery 模板的应用示例
2013/11/12 Javascript
js获取上传文件大小示例代码
2014/04/10 Javascript
jQuery解决浏览器兼容性问题案例分析
2016/04/15 Javascript
基于js对象,操作属性、方法详解
2016/08/11 Javascript
javascript实现获取指定精度的上传文件的大小简单实例
2016/10/25 Javascript
利用JS实现页面删除并重新排序功能
2016/12/09 Javascript
基于JS实现移动端左滑删除功能
2017/07/28 Javascript
如何使用electron-builder及electron-updater给项目配置自动更新
2018/12/24 Javascript
jQuery实现高级检索功能
2019/05/28 jQuery
详解Vue 如何监听Array的变化
2019/06/06 Javascript
JS+DIV实现拖动效果
2020/02/11 Javascript
微信小程序实现滑动操作代码
2020/04/23 Javascript
Vue 根据条件判断van-tab的显示方式
2020/08/03 Javascript
使用python实现BLAST
2018/02/12 Python
深入解析神经网络从原理到实现
2019/07/26 Python
wxPython之wx.DC绘制形状
2019/11/19 Python
Python中Subprocess的不同函数解析
2019/12/10 Python
django框架F&Q 聚合与分组操作示例
2019/12/12 Python
css3 position fixed固定居中问题解决方案
2014/08/19 HTML / CSS
美国在线咖啡、茶和餐厅供应商:LollicupStore
2018/05/04 全球购物
药学专业毕业生求职信
2013/10/20 职场文书
文秘求职信范文
2014/04/10 职场文书
个人收入证明范本
2014/09/18 职场文书
教师党员自我评价范文
2015/03/04 职场文书
美术教师求职信范文
2015/03/20 职场文书
听证会主持词
2015/07/03 职场文书
如何自己动手写SQL执行引擎
2021/06/02 MySQL
CSS中实现动画效果-附案例
2022/02/28 HTML / CSS
python双向链表实例详解
2022/05/25 Python
Nginx如何获取自定义请求header头和URL参数详解
2022/07/23 Servers