浅谈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 16 Python
更改Python命令行交互提示符的方法
Jan 14 Python
在Python程序中实现分布式进程的教程
Apr 28 Python
浅谈Python 集合(set)类型的操作——并交差
Jun 30 Python
Python实现基于二叉树存储结构的堆排序算法示例
Dec 08 Python
python利用OpenCV2实现人脸检测
Apr 16 Python
Python requests发送post请求的一些疑点
May 20 Python
对python字典元素的添加与修改方法详解
Jul 06 Python
Python装饰器模式定义与用法分析
Aug 06 Python
对Python定时任务的启动和停止方法详解
Feb 19 Python
python利用dlib获取人脸的68个landmark
Nov 27 Python
python连接手机自动搜集蚂蚁森林能量的实现代码
Feb 24 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
蝙蝠侠:侠影之谜
2020/03/04 欧美动漫
PHP IF ELSE简化/三元一次式的使用
2011/08/22 PHP
深入解析phpCB批量转换的代码示例
2013/06/27 PHP
php实现SAE上使用storage上传与下载文件的方法
2015/06/29 PHP
PHP+Redis 消息队列 实现高并发下注册人数统计的实例
2018/01/29 PHP
php+croppic.js实现剪切上传图片功能
2018/08/14 PHP
php模拟post提交请求调用接口示例解析
2020/08/07 PHP
屏蔽Flash右键信息的js代码
2010/01/17 Javascript
jquery向.ashx文件post中文乱码问题的解决方法
2011/03/28 Javascript
判断是否安装flash player及当前版本的JS代码
2013/08/08 Javascript
JSON与XML的区别对比及案例应用
2016/11/11 Javascript
使用ionic播放轮询广告的实现方法(必看)
2017/04/24 Javascript
ES6中箭头函数的定义与调用方式详解
2017/06/02 Javascript
微信小程序实现列表下拉刷新上拉加载
2020/07/29 Javascript
用POSTMAN发送JSON格式的POST请求示例
2018/09/04 Javascript
python中星号变量的几种特殊用法
2016/09/07 Python
利用python爬取斗鱼app中照片方法实例
2017/12/03 Python
python操作xlsx文件的包openpyxl实例
2018/05/03 Python
Python动态参数/命名空间/函数嵌套/global和nonlocal
2019/05/29 Python
Django项目使用CircleCI的方法示例
2019/07/14 Python
Python替换月份为英文缩写的实现方法
2019/07/15 Python
Python collections模块使用方法详解
2019/08/28 Python
python同时替换多个字符串方法示例
2019/09/17 Python
django框架cookie和session用法实例详解
2019/12/10 Python
如何提高python 中for循环的效率
2020/04/15 Python
python基于socket函数实现端口扫描
2020/05/28 Python
Linux管理员面试题 Linux admin interview questions
2016/07/08 面试题
博士研究生自我鉴定范文
2013/12/04 职场文书
购房意向书范本
2014/04/01 职场文书
物资采购方案
2014/06/12 职场文书
四风对照检查材料范文
2014/09/27 职场文书
民事诉讼代理授权委托书范本
2014/10/08 职场文书
见习报告怎么写
2014/10/31 职场文书
2015年中学元旦晚会活动方案
2014/12/09 职场文书
党员承诺书格式范文
2015/04/28 职场文书
培训感想范文
2015/08/07 职场文书