浅谈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正则表达式的使用范例详解
Aug 08 Python
Python操作MySQL模拟银行转账
Mar 12 Python
python 拷贝特定后缀名文件,并保留原始目录结构的实例
Apr 27 Python
Python机器学习之scikit-learn库中KNN算法的封装与使用方法
Dec 14 Python
解决python执行不输出系统命令弹框的问题
Jun 24 Python
Python.append()与Python.expand()用法详解
Dec 18 Python
深入了解如何基于Python读写Kafka
Dec 31 Python
使用 Python 遍历目录树的方法
Feb 29 Python
django model通过字典更新数据实例
Apr 01 Python
基于matplotlib中ion()和ioff()的使用详解
Jun 16 Python
Python基础之tkinter图形化界面学习
Apr 29 Python
python实现双向链表原理
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下的权限算法的实现
2007/04/28 PHP
php 将bmp图片转为jpg等其他任意格式的图片
2009/06/21 PHP
php自动获取字符串编码函数mb_detect_encoding
2011/05/31 PHP
php 从一个数组中随机的取出若干个不同的数实例
2016/12/31 PHP
详细对比php中类继承和接口继承
2018/10/11 PHP
JS动态获取当前时间,并写到特定的区域
2013/05/03 Javascript
JavaScript闭包实例讲解
2014/04/22 Javascript
node.js中的buffer.toJSON方法使用说明
2014/12/14 Javascript
JavaScript中将数组进行合并的基本方法讲解
2016/03/07 Javascript
javascript 数组的定义和数组的长度
2016/06/07 Javascript
一篇文章搞定JavaScript类型转换(面试常见)
2017/01/21 Javascript
Bootstrap选项卡学习笔记分享
2017/02/13 Javascript
webpack配置导致字体图标无法显示的解决方法
2018/03/06 Javascript
webstorm中vue语法的支持详解
2018/05/09 Javascript
[31:29]完美世界DOTA2联赛PWL S3 INK ICE vs Magma 第一场 12.20
2020/12/23 DOTA
解决windows下Sublime Text 2 运行 PyQt 不显示的方法分享
2014/06/18 Python
Python NumPy库安装使用笔记
2015/05/18 Python
解读Django框架中的低层次缓存API
2015/07/24 Python
Python中return语句用法实例分析
2015/08/04 Python
Python脚本实现自动发带图的微博
2016/04/27 Python
Pycharm学习教程(7)虚拟机VM的配置教程
2017/05/04 Python
python滑块验证码的破解实现
2019/11/10 Python
购买澳大利亚最好的服装和内衣在线:BONDS
2016/10/14 全球购物
Lookfantastic意大利官网:英国知名美妆购物网站
2019/05/31 全球购物
英文版银行求职信
2013/10/09 职场文书
受欢迎的大学生自我评价
2013/12/05 职场文书
餐饮业的创业计划书范文
2013/12/26 职场文书
蔬菜基地的创业计划书
2014/01/06 职场文书
信息员培训方案
2014/06/12 职场文书
环境日宣传活动总结
2014/07/09 职场文书
个人房屋买卖协议书(范本)
2014/10/04 职场文书
2015应届毕业生自荐信范文
2015/03/05 职场文书
党小组考察意见
2015/06/02 职场文书
nginx里的rewrite跳转的实现
2021/03/31 Servers
Python中的变量与常量
2021/11/11 Python
PHP面试题 wakeup魔法 Ezpop pop序列化与反序列化
2022/04/11 PHP