浅谈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写的一个文本编辑器
Jan 23 Python
在Python下进行UDP网络编程的教程
Apr 29 Python
python中global用法实例分析
Apr 30 Python
Python加pyGame实现的简单拼图游戏实例
May 15 Python
Python网站验证码识别
Jan 25 Python
详解TensorFlow查看ckpt中变量的几种方法
Jun 19 Python
Python3中详解fabfile的编写
Jun 24 Python
django如何自己创建一个中间件
Jul 24 Python
利用python实现AR教程
Nov 20 Python
基于Python获取城市近7天天气预报
Nov 26 Python
利用Python实现字幕挂载(把字幕文件与视频合并)思路详解
Oct 21 Python
python中的None与NULL用法说明
May 25 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 获取远程网页内容的函数
2009/09/08 PHP
php生成随机字符串可指定纯数字、纯字母或者混合的
2014/04/18 PHP
php专用数组排序类ArraySortUtil用法实例
2015/04/03 PHP
替换php字符串中的单引号为双引号的方法
2017/02/16 PHP
Prototype使用指南之string.js
2007/01/10 Javascript
用htc组件制作windows选项卡
2007/01/13 Javascript
JavaScript 面向对象的 私有成员和公开成员
2010/05/13 Javascript
一个轻量级的javascript库 pj介绍
2010/12/19 Javascript
浅析jQuery中常用的元素查找方法总结
2013/07/04 Javascript
JavaScript 模拟类机制及私有变量的方法及思路
2013/07/10 Javascript
JavaScript实现同时调用多个函数的方法
2015/11/09 Javascript
JS获取和修改元素样式的实例代码
2016/08/06 Javascript
利用Angularjs和Bootstrap前端开发案例实战
2016/08/27 Javascript
懒加载实现的分页&&网站footer自适应
2016/12/21 Javascript
详解React-Native全球化多语言切换工具库react-native-i18n
2017/11/03 Javascript
ES6 中可以提升幸福度的小功能
2018/08/06 Javascript
python读取csv文件示例(python操作csv)
2014/03/11 Python
Python程序中使用SQLAlchemy时出现乱码的解决方案
2015/04/24 Python
Python使用Srapy框架爬虫模拟登陆并抓取知乎内容
2016/07/02 Python
Win10下python 2.7.13 安装配置方法图文教程
2018/09/18 Python
Python实现通过解析域名获取ip地址的方法分析
2019/05/17 Python
python字典嵌套字典的情况下找到某个key的value详解
2019/07/10 Python
python3获取文件中url内容并下载代码实例
2019/12/27 Python
解决pycharm中导入自己写的.py函数出错问题
2020/02/12 Python
基于pytorch padding=SAME的解决方式
2020/02/18 Python
python怎么判断素数
2020/07/01 Python
CSS3媒体查询Media Queries基础学习教程
2016/02/29 HTML / CSS
html5 canvas fillRect坐标和大小的问题解决方法
2014/03/26 HTML / CSS
护士求职推荐信范文
2013/11/23 职场文书
接受捐赠答谢词
2014/01/27 职场文书
护林防火标语
2014/06/27 职场文书
有子女的离婚协议书怎么写(范本)
2014/09/29 职场文书
2014年劳动部工作总结
2014/12/11 职场文书
西安导游词
2015/02/12 职场文书
党员“一帮一”活动总结
2015/05/07 职场文书
2019同学聚会主持词
2019/05/06 职场文书