浅谈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 16 Python
给Python的Django框架下搭建的BLOG添加RSS功能的教程
Apr 08 Python
基于Python 的进程管理工具supervisor使用指南
Sep 18 Python
Python编程实现及时获取新邮件的方法示例
Aug 10 Python
python安装numpy&安装matplotlib& scipy的教程
Nov 02 Python
pycharm远程调试openstack代码
Nov 21 Python
Pycharm无法使用已经安装Selenium的解决方法
Oct 13 Python
Python实现的ftp服务器功能详解【附源码下载】
Jun 26 Python
python爬虫模拟浏览器访问-User-Agent过程解析
Dec 28 Python
基于python检查SSL证书到期情况代码实例
Apr 04 Python
Python通过kerberos安全认证操作kafka方式
Jun 06 Python
Django如何在不停机的情况下创建索引
Aug 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
在服务端进行目录建立、删除,文件上传、删除的过程的php代码
2008/09/10 PHP
php重定向的三种方法分享
2012/02/22 PHP
PHPMYADMIN导入数据最大为2M的解决方法
2012/04/23 PHP
php中get_headers函数的作用及用法的详细介绍
2013/04/27 PHP
php5.4传引用时报错问题分析
2016/01/22 PHP
php二维码生成以及下载实现
2017/09/28 PHP
滚动经典最新话题[prototype框架]下编写
2006/10/03 Javascript
如何在标题栏显示框架内页面的标题
2007/02/03 Javascript
javascript onmouseout 解决办法
2010/07/17 Javascript
ECMAScript 创建自己的js类库
2012/11/22 Javascript
jQuery Form 页面表单提交的小例子
2013/11/15 Javascript
JavaScript字符串对象split方法入门实例(用于把字符串分割成数组)
2014/10/16 Javascript
JavaScript字符串对象charAt方法入门实例(用于取得指定位置的字符)
2014/10/17 Javascript
js实现DOM走马灯特效的方法
2015/01/21 Javascript
JavaScript实现同时调用多个函数的方法
2015/11/09 Javascript
原生态js,鼠标按下后,经过了那些单元格的简单实例
2016/08/11 Javascript
AngularJS教程之MVC体系结构详解
2016/08/16 Javascript
ES6概念 ymbol.for()方法
2016/12/25 Javascript
JS实现常见的查找、排序、去重算法示例
2018/05/21 Javascript
JS实现继承的几种常用方式示例
2019/06/22 Javascript
微信小程序 行的删除和增加操作实现详解
2019/09/29 Javascript
nest.js 使用express需要提供多个静态目录的操作方法
2019/10/24 Javascript
python列出目录下指定文件与子目录的方法
2015/07/03 Python
python实现二分查找算法
2017/09/21 Python
从0开始的Python学习014面向对象编程(推荐)
2019/04/02 Python
Python多线程threading模块用法实例分析
2019/05/22 Python
python使用pyecharts库画地图数据可视化的实现
2020/03/25 Python
Python+Django+MySQL实现基于Web版的增删改查的示例代码
2020/05/13 Python
推荐值得学习的12款python-web开发框架
2020/08/10 Python
python从Oracle读取数据生成图表
2020/10/14 Python
内业资料员岗位职责
2014/01/04 职场文书
校庆活动方案
2014/03/31 职场文书
学校做一个有道德的人活动方案
2014/08/23 职场文书
房屋财产继承协议书范本
2014/11/03 职场文书
惊天动地观后感
2015/06/10 职场文书
公务员的复习计划书,请收下!
2019/07/15 职场文书