浅谈Pytorch中的torch.gather函数的含义
作者:江户川柯壮 发布时间:2022-12-26 02:25:54
标签: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可能的一个作用。
来源:https://blog.csdn.net/edogawachia/article/details/80515038


猜你喜欢
- 这篇文章主要介绍了Python爬虫爬取煎蛋网图片代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的
- 本文将通过解读render函数的源码,来分析vue中的vNode是如何创建的。在vue2.x的版本中,无论是直接书写render函数,还是使
- 前言大家应该都有所体会,为了提高验证码的识别准确率,我们当然要首先得到足够多的测试数据。验证码下载下来容易,但是需要人脑手工识别着实让人受不
- 经常使用到有关数据库的操作。包括连接代码、SQL命令等等,又不曾刻意去记忆它们(我本人是不愿意去记这东东),所以常常在用到的时候又去查书本,
- 一个ASPJPEG组件综合操作的asp类CLASS相关文章:ASP怎么谈到应用到类的?ASP中类的详细介绍(class Property G
- 本文实例讲述了Python判断Abundant Number的方法。分享给大家供大家参考。具体如下:Abundant Number,中文译成
- 本教程将分步讲解如何使用JQuery和CSS打造一个炫酷动感菜单。jQuery的"write less, do more"
- 在近几年Python的呼声越来越高,很多刚开始起步想要学习编程的朋友都会犹豫要不要选择学习Python,毕竟作为人工智能时代的首选语言这个诱
- 1、chr(i)chr()函数返回ASCII码对应的字符串。>>> print chr(65)A>>>
- 现在实际的情况是这样的:客户有一台打卡机,员工打卡的信息全部储存在打卡机的Access数据库里面,现在客户引入了一种新的管理系统,需要将Ac
- Python中numpy数组的合并有很多方法,如- np.append() - np.concatenate() - np.stack()
- 背景描述:Pycharm作为python专业开发工具,要比轻量级的vscode更加稳定,适合个人、团队的项目开发。同时pycharm来创建虚
- 按照正常的产品逻辑,我们在进行页面切换时滚动条应该是在页面顶部的,可是。。。在使用vue-router进行页面切换时,发现滚动条所处的位置被
- int 数字类型class int(object): """ int(x=0) -&g
- 一、存在问题在v-model想绑定表达式 || 函数方法,发现控制台报错了,不允许这波操作。下面我们分析存在该问题的原因和解决方法。实战经验
- 前篇我们稍微学习了Python中时间的获取,这次继续学习日期的时区转换,格式化等等。开发中常用的日期操作还有哪些?时区转换显示日期格式化秒数
- 最近写一个BootStrap页面...因为功能需要所以决定一个页面解决所有问题,然后用jQuery来动态显示功能....然而这样做的话页面会
- 关于asp缓存函数,类什么的,在网上可以说笔笔皆是,为啥我要不辞辛苦去写一个呢?大概看了下,各有各的优点吧,可是大部分好像不可以缓存数据额,
- nilGo中,每个指针都有2个基本信息,指针的类型和指针的值(type,value);当执行==时,需要比较类型与值(只有类型与值都相等时,
- Group By分组后选取每组最新的一条数据问题group by语句只会展示一条数据,而且很多时候并不会展示我们想要的数据,如何解决呢首先我