浅谈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操作Access数据库基本步骤分析
Sep 19 Python
Python使用getpass库读取密码的示例
Oct 10 Python
详解Python核心编程中的浅拷贝与深拷贝
Jan 07 Python
python实现求解列表中元素的排列和组合问题
Mar 15 Python
mac下如何将python2.7改为python3
Jul 13 Python
Python基本socket通信控制操作示例
Jan 30 Python
在Python中COM口的调用方法
Jul 03 Python
python图片二值化提高识别率代码实例
Aug 24 Python
python对验证码降噪的实现示例代码
Nov 12 Python
python实现文字版扫雷
Apr 24 Python
django form和field具体方法和属性说明
Jul 09 Python
分享Python异步爬取知乎热榜
Apr 12 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判断输入不超过mysql的varchar字段的长度范围
2011/06/24 PHP
从手册去理解分析PHP session机制
2011/07/17 PHP
PHP 类相关函数的使用详解
2013/05/10 PHP
PHP中批量生成静态html(命令行下运行PHP)
2014/04/19 PHP
php生成固定长度纯数字编码的方法
2015/07/09 PHP
XHProf报告字段含义的解析
2016/05/17 PHP
phpstudy默认不支持64位php的解决方法
2017/02/20 PHP
BOOM vs RR BO5 第四场 2.14
2021/03/10 DOTA
javascript 动态参数判空操作
2008/12/22 Javascript
只需20行代码就可以写出CSS覆盖率测试脚本
2013/04/24 Javascript
JS不间断向上滚动效果代码
2013/12/25 Javascript
JavaScript Serializer序列化时间处理示例
2014/07/31 Javascript
深入分析Cookie的安全性问题
2015/03/01 Javascript
jQuery操作表单常用控件方法小结
2015/03/23 Javascript
jquery实现从数组移除指定的值
2015/06/24 Javascript
详解获取jq ul第一个li定位的四种解决方案
2016/11/23 Javascript
简单谈谈关于Angular Cli打包的事
2017/09/05 Javascript
Vue的elementUI实现自定义主题方法
2018/02/23 Javascript
基于vue.js实现的分页
2018/03/13 Javascript
Vue+Node服务器查询Mongo数据库及页面数据传递操作实例分析
2019/12/20 Javascript
python利用正则表达式排除集合中字符的功能示例
2017/10/10 Python
python用插值法绘制平滑曲线
2021/02/19 Python
Python eval的常见错误封装及利用原理详解
2019/03/26 Python
TensorFLow 数学运算的示例代码
2020/04/21 Python
使用Keras中的ImageDataGenerator进行批次读图方式
2020/06/17 Python
美国地毯购买网站:Rugs USA
2019/02/23 全球购物
英国知名小木屋定制网站:Tiger Sheds
2020/03/06 全球购物
试述DBMS的主要功能
2016/11/13 面试题
个人求职简历的自我评价范文
2013/10/09 职场文书
美术毕业生求职信
2014/02/25 职场文书
社团2014年植树节活动总结
2014/03/11 职场文书
房产买卖委托公证书
2014/04/04 职场文书
2014年客服工作总结与计划
2014/12/09 职场文书
安全教育的主题班会
2015/08/13 职场文书
php将xml转化对象的实例详解
2021/11/17 PHP
vue router 动态路由清除方式
2022/05/25 Vue.js