浅谈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 相关文章推荐
浅谈Python中的数据类型
May 05 Python
python 异常处理总结
Oct 18 Python
详谈python http长连接客户端
Jun 12 Python
python实现简易版计算器
Jun 22 Python
使用python根据端口号关闭进程的方法
Nov 06 Python
Linux CentOS Python开发环境搭建教程
Nov 28 Python
安装python及pycharm的教程图解
Oct 10 Python
python 利用jinja2模板生成html代码实例
Oct 10 Python
Python之——生成动态路由轨迹图的实例
Nov 22 Python
基于python实现文件加密功能
Jan 06 Python
jupyter lab的目录调整及设置默认浏览器为chrome的方法
Apr 10 Python
Python实现列表拼接和去重的三种方式
Jul 02 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
从手册去理解分析PHP session机制
2011/07/17 PHP
在WAMP环境下搭建ZendDebugger php调试工具的方法
2011/07/18 PHP
PHP静态调用非静态方法的应用分析
2013/05/02 PHP
使用PHP和HTML5 FormData实现无刷新文件上传教程
2014/09/06 PHP
PHP ADODB实现分页功能简单示例
2018/05/25 PHP
js身份证验证超强脚本
2008/10/26 Javascript
网页上的Javascript编辑器和代码格式化
2010/04/25 Javascript
jquery 注意事项与常用语法小结
2010/06/07 Javascript
Javascript中的delete介绍
2012/09/02 Javascript
网页整体变灰白色(兼容各浏览器)实例
2013/04/21 Javascript
JS、CSS加载中的小问题探讨
2013/11/26 Javascript
JS基于Ajax实现的网页Loading效果代码
2015/10/27 Javascript
浅谈Sticky组件的改进实现
2016/03/22 Javascript
JS对象和字符串之间互换操作实例分析
2019/02/02 Javascript
9102了,你还不会移动端真机调试吗
2019/03/25 Javascript
浅谈Vue3.0之前你必须知道的TypeScript实战技巧
2019/09/11 Javascript
vue+element树组件 实现树懒加载的过程详解
2019/10/21 Javascript
对vue生命周期的深入理解
2020/12/03 Vue.js
Python中的map()函数和reduce()函数的用法
2015/04/27 Python
Python实现豆瓣图片下载的方法
2015/05/25 Python
Python实现图片拼接的代码
2018/07/02 Python
python实现求两个字符串的最长公共子串方法
2018/07/20 Python
解决python3读取Python2存储的pickle文件问题
2018/10/25 Python
Python小工具之消耗系统指定大小内存的方法
2018/12/03 Python
python中正则表达式与模式匹配
2019/05/07 Python
Python 定义只读属性的实现方式
2020/03/05 Python
python如何提升爬虫效率
2020/09/27 Python
荷兰天然和有机产品网上商城:BigGreenSmile.nl
2020/07/26 全球购物
红领巾心向党广播稿
2014/01/19 职场文书
法人委托书的范本格式
2014/09/11 职场文书
运动会广播稿100字
2014/09/14 职场文书
2015年安全员工作总结范文
2015/04/22 职场文书
同学会感言
2015/07/30 职场文书
银行求职信范文
2019/05/13 职场文书
Python list去重且保持原顺序不变的方法
2021/04/03 Python
MySQL一劳永逸永久支持输入中文的方法实例
2022/08/05 MySQL