浅谈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 29 Python
各个系统下的Python解释器相关安装方法
Oct 12 Python
Python利用matplotlib生成图片背景及图例透明的效果
Apr 27 Python
详解Python异常处理中的Finally else的功能
Dec 29 Python
在IPython中进行Python程序执行时间的测量方法
Nov 01 Python
pandas筛选某列出现编码错误的解决方法
Nov 07 Python
Python Pandas数据结构简单介绍
Jul 03 Python
djano一对一、多对多、分页实例代码
Aug 16 Python
python统计函数库scipy.stats的用法解析
Feb 25 Python
python编写函数注意事项总结
Mar 29 Python
Python数据可视化之用Matplotlib绘制常用图形
Jun 03 Python
再谈python_tkinter弹出对话框创建
Mar 20 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
ThinkPHP CURD方法之limit方法详解
2014/06/18 PHP
实用的PHP带公钥加密类分享(每次加密结果都不一样哦)
2014/08/20 PHP
php绘制圆形的方法
2015/01/24 PHP
ThinkPHP模板标签eq if 中区分0,null,false的方法
2017/03/24 PHP
PHP设计模式之PHP迭代器模式讲解
2019/03/22 PHP
PHP中echo与print区别点整理
2021/03/09 PHP
JavaScript 模拟用户单击事件
2009/12/31 Javascript
Jqgrid表格随窗口大小改变而改变的简单实例
2013/12/28 Javascript
jQuery实现滚动切换的tab选项卡效果代码
2015/08/26 Javascript
bootstrap-treeview自定义双击事件实现方法
2016/01/09 Javascript
Bootstrap表单组件教程详解
2016/04/26 Javascript
vue货币过滤器的实现方法
2017/04/01 Javascript
基于jQuery解决ios10以上版本缩放问题
2017/11/03 jQuery
浅谈Redux中间件的实践
2018/07/27 Javascript
在Vue 中使用Typescript的示例代码
2018/09/10 Javascript
javascript实现简单搜索功能
2020/03/26 Javascript
javascript 易错知识点实例小结
2020/04/25 Javascript
微信小程序实现可长按移动控件
2020/11/01 Javascript
python 提取文件的小程序
2009/07/29 Python
Python中使用Beautiful Soup库的超详细教程
2015/04/30 Python
python使用正则表达式替换匹配成功的组并输出替换的次数
2017/11/22 Python
Flask web开发处理POST请求实现(登录案例)
2018/07/26 Python
基于python二叉树的构造和打印例子
2019/08/09 Python
简单瞅瞅Python vars()内置函数的实现
2019/09/27 Python
解决pyCharm中 module 调用失败的问题
2020/02/12 Python
使用Nibabel库对nii格式图像的读写操作
2020/07/01 Python
实例讲解Python 迭代器与生成器
2020/07/08 Python
Pytorch - TORCH.NN.INIT 参数初始化的操作
2021/02/27 Python
AmazeUI 列表的实现示例
2020/08/17 HTML / CSS
北卡罗来纳州豪华家具和家居装饰店:Carolina Rustica
2018/10/30 全球购物
工作室成员个人发展规划范文
2014/01/24 职场文书
公司感恩节活动策划书
2014/10/11 职场文书
上诉答辩状范文
2015/05/22 职场文书
2015年十月一日放假通知
2015/08/18 职场文书
详解MySQL多版本并发控制机制(MVCC)源码
2021/06/23 MySQL
MySQL定时备份数据库(全库备份)的实现
2021/09/25 MySQL