浅谈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之hello world
May 21 Python
python获取Linux下文件版本信息、公司名和产品名的方法
Oct 05 Python
零基础写python爬虫之抓取糗事百科代码分享
Nov 06 Python
Python实现批量修改文件名实例
Jul 08 Python
Python下的Softmax回归函数的实现方法(推荐)
Jan 26 Python
python如何实现反向迭代
Mar 20 Python
python使用rpc框架gRPC的方法
Aug 24 Python
Python函数的返回值、匿名函数lambda、filter函数、map函数、reduce函数用法实例分析
Dec 26 Python
在pytorch中实现只让指定变量向后传播梯度
Feb 29 Python
python如何提取英语pdf内容并翻译
Mar 03 Python
Opencv求取连通区域重心实例
Jun 04 Python
python 机器学习的标准化、归一化、正则化、离散化和白化
Apr 16 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
攻克CakePHP系列一 连接MySQL数据库
2008/10/22 PHP
php实现的AES加密类定义与用法示例
2018/01/29 PHP
js查找父节点的简单方法
2008/06/28 Javascript
javascript 无提示关闭窗口脚本
2009/08/17 Javascript
基于node.js的快速开发透明代理
2010/12/25 Javascript
30个精美的jQuery幻灯片效果插件和教程
2011/08/23 Javascript
js数组的操作指南
2014/12/28 Javascript
使用JavaScript的AngularJS库编写hello world的方法
2015/06/23 Javascript
javascript实现连续赋值
2015/08/10 Javascript
js实现人才网站职位选择功能的方法
2015/08/14 Javascript
require、backbone等重构手机图片查看器
2016/11/17 Javascript
IntersectionObserver API 详解篇
2016/12/11 Javascript
详解微信小程序开发之城市选择器 城市切换
2017/01/17 Javascript
JavaScript中清空数组的三种方式
2017/03/22 Javascript
JS鼠标3次点击事件实现代码及扩展思路
2017/09/12 Javascript
vue实现百度下拉列表交互操作示例
2019/03/12 Javascript
js+HTML5 canvas 实现简单的加载条(进度条)功能示例
2019/07/16 Javascript
详解vue-cli项目开发/生产环境代理实现跨域请求
2019/07/23 Javascript
vue.js基于v-for实现批量渲染 Json数组对象列表数据示例
2019/08/03 Javascript
vue 源码解析之虚拟Dom-render
2019/08/26 Javascript
Django自定义插件实现网站登录验证码功能
2017/04/19 Python
20个常用Python运维库和模块
2018/02/12 Python
python实现dijkstra最短路由算法
2019/01/17 Python
Python制作动态字符图的实例
2019/01/27 Python
django 环境变量配置过程详解
2019/08/06 Python
基于python实现蓝牙通信代码实例
2019/11/19 Python
python实现字典嵌套列表取值
2019/12/16 Python
pytorch-神经网络拟合曲线实例
2020/01/15 Python
python自动下载图片的方法示例
2020/03/25 Python
CSS3 @media的基本用法总结
2019/09/10 HTML / CSS
西班牙英格列斯百货法国官网:El Corte Inglés法国
2017/07/09 全球购物
《鸟岛》教学反思
2014/04/26 职场文书
工厂标语大全
2014/10/06 职场文书
比赛口号霸气押韵
2015/12/24 职场文书
SpringDataJPA实体类关系映射配置方式
2021/12/06 Java/Android
DE1107机评
2022/04/05 无线电