浅谈Pytorch中的torch.gather函数的含义

 更新时间:2019年08月18日 17:09:17   作者:江户川柯壮  
今天小编就为大家分享一篇浅谈Pytorch中的torch.gather函数的含义,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

pytorch中的gather函数

pytorch比tensorflow更加编程友好,所以准备用pytorch试着做最近要做的一些实验。

立个flag开始学习pytorch,新开一个分类整理学习pytorch中的一些踩到的泥坑。

今天刚开始接触,读了一下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装饰器练习题及答案

    这篇文章主要介绍了python装饰器练习题及答案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • 浅析python表达式4+0.5值的数据类型

    浅析python表达式4+0.5值的数据类型

    在本篇文章里小编给大家整理的是一篇关于python表达式4+0.5值的数据类型的知识点内容,需要的的朋友们学习下。
    2020-02-02
  • Python读写及备份oracle数据库操作示例

    Python读写及备份oracle数据库操作示例

    这篇文章主要介绍了Python读写及备份oracle数据库操作,结合实例形式分析了Python针对Oracle数据库操作的相关库安装,以及使用cx_Oracle与pandas库进行Oracle数据库的查询、插入、备份等操作相关实现技巧,需要的朋友可以参考下
    2018-05-05
  • Python数据分析之 Pandas Dataframe修改和删除及查询操作

    Python数据分析之 Pandas Dataframe修改和删除及查询操作

    这篇文章主要介绍了Python数据分析之 Pandas Dataframe修改和删除及查询操作的相关资料,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-05-05
  • python对绑定事件的鼠标、按键的判断实例

    python对绑定事件的鼠标、按键的判断实例

    今天小编就为大家分享一篇python对绑定事件的鼠标、按键的判断实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • django 中QuerySet特性功能详解

    django 中QuerySet特性功能详解

    这篇文章主要介绍了django 中QuerySet特性功能详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • Python几种常见算法汇总

    Python几种常见算法汇总

    这篇文章主要介绍了如何用Python实现几种常见算法,文中代码简单易懂,方便大家更好的学习,感兴趣的朋友可以了解下
    2020-06-06
  • Centos部署django服务nginx+uwsgi的方法

    Centos部署django服务nginx+uwsgi的方法

    这篇文章主要介绍了Centos部署django服务nginx+uwsgi的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01
  • 使用python脚本检查ssl证书到期时间

    使用python脚本检查ssl证书到期时间

    这篇文章主要为大家介绍了使用python脚本检查ssl证书到期时间,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01
  • 基于TensorFlow中自定义梯度的2种方式

    基于TensorFlow中自定义梯度的2种方式

    今天小编就为大家分享一篇基于TensorFlow中自定义梯度的2种方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02

最新评论