浅谈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集合类型用法分析
Apr 08 Python
Python中使用装饰器时需要注意的一些问题
May 11 Python
python实现中文分词FMM算法实例
Jul 10 Python
利用ctypes提高Python的执行速度
Sep 09 Python
python实现发送邮件及附件功能
Mar 02 Python
使用Python爬取最好大学网大学排名
Feb 24 Python
python2.7实现邮件发送功能
Dec 12 Python
Pytorch模型转onnx模型实例
Jan 15 Python
解决python-docx打包之后找不到default.docx的问题
Feb 13 Python
python - timeit 时间模块
Apr 06 Python
Python selenium模拟网页点击爬虫交管12123违章数据
May 26 Python
Django分页器的用法你都了解吗
May 26 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
在apache下限制每个虚拟主机的并发数!!!!
2006/10/09 PHP
escape unescape的php下的实现方法
2007/04/27 PHP
php 全局变量范围分析
2009/08/07 PHP
Windows服务器中PHP如何安装redis扩展
2019/09/27 PHP
跟随鼠标旋转的文字
2006/11/30 Javascript
Angular的Bootstrap(引导)和Compiler(编译)机制
2016/06/20 Javascript
js实现可键盘控制的简单抽奖程序
2016/07/13 Javascript
Vue数据驱动模拟实现2
2017/01/11 Javascript
Vue计算属性的使用
2017/08/04 Javascript
node中间层实现文件上传功能
2018/06/11 Javascript
Nuxt.js实现校验访问浏览器类型的中间件
2018/08/24 Javascript
vue-quill-editor+plupload富文本编辑器实例详解
2018/10/19 Javascript
详解vue中router-link标签所必备了解的属性
2019/04/15 Javascript
微信小程序实现时间进度条功能
2020/11/17 Javascript
python的几种开发工具介绍
2007/03/07 Python
python实现监控linux性能及进程消耗性能的方法
2014/07/25 Python
Python自动化运维_文件内容差异对比分析
2017/12/13 Python
python+pandas生成指定日期和重采样的方法
2018/04/11 Python
python3判断url链接是否为404的方法
2018/08/10 Python
python实现雪花飘落效果实例讲解
2019/06/18 Python
python 消费 kafka 数据教程
2019/12/21 Python
Python第三方库的几种安装方式(小结)
2020/04/03 Python
keras分类模型中的输入数据与标签的维度实例
2020/07/03 Python
HTML5仿微信聊天界面、微信朋友圈实例代码
2018/01/29 HTML / CSS
解析html5 canvas实现背景鼠标连线动态效果代码
2019/06/17 HTML / CSS
打印机墨盒:123Inkjets
2017/02/16 全球购物
ProForm英国站点:健身房和健身器材网上商店
2019/06/05 全球购物
俄罗斯最大的香水和化妆品网上商店:Randewoo
2020/11/05 全球购物
局域网标准
2016/09/10 面试题
担保书格式及范文
2014/04/01 职场文书
银行内勤岗位职责
2014/04/09 职场文书
少先队活动总结
2014/08/29 职场文书
天堂的孩子观后感
2015/06/11 职场文书
《家》读后感:万惜拯救,冷暖自知
2019/09/25 职场文书
idea 在springboot中使用lombok插件的方法
2021/08/02 Java/Android
Java虚拟机内存结构及编码实战分享
2022/04/07 Java/Android