浅谈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中的列表生成式与生成器学习教程
Mar 13 Python
Python之Web框架Django项目搭建全过程
May 02 Python
Python+Socket实现基于UDP协议的局域网广播功能示例
Aug 31 Python
python基础练习之几个简单的游戏
Nov 10 Python
浅谈Python中的作用域规则和闭包
Mar 20 Python
python 将print输出的内容保存到txt文件中
Jul 17 Python
pandas通过loc生成新的列方法
Nov 28 Python
python样条插值的实现代码
Dec 17 Python
python sort、sort_index方法代码实例
Mar 28 Python
详解用python实现基本的学生管理系统(文件存储版)(python3)
Apr 25 Python
Mac安装python3的方法步骤
Aug 09 Python
什么是Python中的匿名函数
Jun 02 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
站长助手-网站web在线管理程序 v1.0 下载
2007/05/12 PHP
在PHP里得到前天和昨天的日期的代码
2007/08/16 PHP
PHP setcookie设置Cookie用法(及设置无效的问题)
2011/07/13 PHP
腾讯CMEM的PHP扩展编译安装方法
2015/09/25 PHP
详解Yaf框架PHPUnit集成测试方法
2017/12/27 PHP
PHP实现的分解质因数操作示例
2018/08/01 PHP
PHP pthreads v3使用中的一些坑和注意点分析
2020/02/21 PHP
网页开发中的容易忽略的问题 javascript HTML中的table
2009/04/15 Javascript
JavaScript实现的链表数据结构实例
2015/04/02 Javascript
jQuery层动画定位滑动效果的方法
2015/04/30 Javascript
JS实现队列的先进先出功能示例
2017/05/10 Javascript
Node.js使用Angular简单示例
2018/05/11 Javascript
vue实现弹幕功能
2019/10/25 Javascript
JS实现打字游戏
2019/12/17 Javascript
[01:06:59]完美世界DOTA2联赛PWL S2 Magma vs FTD 第一场 11.29
2020/12/02 DOTA
python 中文乱码问题深入分析
2011/03/13 Python
python散点图实例之随机漫步
2018/08/27 Python
python按时间排序目录下的文件实现方法
2018/10/17 Python
Python正则表达式实现简易计算器功能示例
2019/05/07 Python
Django 自动生成api接口文档教程
2019/11/19 Python
关于windows下Tensorflow和pytorch安装教程
2020/02/04 Python
python GUI库图形界面开发之PyQt5窗口类QMainWindow详细使用方法
2020/02/26 Python
使用Python对Dicom文件进行读取与写入的实现
2020/04/20 Python
keras K.function获取某层的输出操作
2020/06/29 Python
python 获取剪切板内容的两种方法
2020/11/28 Python
Lulu Guinness露露·吉尼斯官网:红唇包
2019/02/03 全球购物
DTD的含义以及作用
2014/01/26 面试题
争先创优公开承诺书
2014/08/30 职场文书
教师工作总结范文2014
2014/11/10 职场文书
离婚协议书范文2014(夫妻感情破裂)
2014/12/14 职场文书
宾馆前台接待岗位职责
2015/04/02 职场文书
婚姻出轨保证书
2015/05/08 职场文书
python读取pdf格式文档的实现代码
2021/04/01 Python
教你怎么用python实现字符串转日期
2021/05/24 Python
为了顺利买到演唱会的票用Python制作了自动抢票的脚本
2021/10/16 Python
详解PyTorch模型保存与加载
2022/04/28 Python