gather() 的函数功能
参考文章:Pytorch中的torch.gather函数的含义
demo
b = torch.Tensor([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
print(b)
index_1 = torch.LongTensor([[0,1],[2,0],[1,1]])
index_2 = torch.LongTensor([[0,1,1],[0,0,0]])
print(b.gather(dim=1, index=index_1))#print(torch.gather(b, dim=1, index=index_1))
print(b.gather(dim=0, index=index_2))
gather函数的功能可以解释为根据 index 参数(即是索引)返回数组里面对应位置的值
这里的b.gather()写法和torch.gather(b)的写法都可以,重点是两个参数,dim和index
低维的理解方式
dim=0表示按行来索引,也就是说index的值表示的是第几行
dim=1表示按列来索引,也就是指index的值表示的是第几列
b.gather(dim=1, index=index_1)
可以看到index_1 = torch.LongTensor([[0,1],[2,0],[1,1]])
是一个3行2列的矩阵,根据dim=1,index_1里面的值表示的就是第几列,第几行就由index_1决定(共3行),那么[0,1]表示的就是【第0行第0列,第0行第1列】;[2,0]表示【第1行第2列,第1行第0列】, [1,1]表示【第3行第1列,第3行第1列】
b.gather(dim=0, index=index_2)
可以看到index_2 = torch.LongTensor([[0,1,1],[0,0,0]])
是一个2行3列的矩阵,根据dim=0,index_2里面的值表示的就是第几行,第几列就由index_2决定(共3列),那么[0,1,1]表示的就是【第0行第0列,第1行第1列,第1行第2列】;[0,0,0]表示【第0行第0列,第0行第1列,第0行第2列】
运行结果
'''b'''
######### 0列 1列 2列 3列
tensor([[ 1., 2., 3., 4.],# 0行[ 5., 6., 7., 8.],# 1行[ 9., 10., 11., 12.]])# 2行
'''b.gather(dim=1, index=index_1)'''
tensor([[ 1., 2.],[ 7., 5.],[10., 10.]])
'''b.gather(dim=0, index=index_2)'''
tensor([[1., 6., 7.],[1., 2., 3.]])
高维的理解方式
b.gather(dim=1, index=index_1)
可以看到index_1 = torch.LongTensor([[0,1],[2,0],[1,1]])
是一个3行2列的矩阵,index_1的[0,1]中的0的索引是(0,0),1的索引是(0,1);[2,0]中的2索引是(1,0),0的索引是(1,1);[1,1]中左边1的索引是(2,0),右边1的索引是(2,1)。然后根据dim=1,需要把这些索引的dim=1维度的值全部替换成对应index_1中的值,操作如下:
[0,1]中的0的索引是(0,0)转变为(0,0),1的索引是(0,1)转变为(0,1)
[2,0]中的2索引是(1,0)转变为(1,2),0的索引是(1,1)转变为(1,0)
[1,1]中左边1的索引是(2,0)转变为(2,1),右边1的索引是(2,1)转变为(2,1)
转变之后的索引对应到b上,把对应索引的数值取出来即可
gather() 的函数功能相关推荐
- 函数功能MATLAB
近期一直在查找函数功能之类的题问,现在正好有机会和大家享共一下. 百科名片 录目 简介 开展程历 要主功能 新特性 版本分析 特色 优势 开展 简介 开展程历 要主功能 新特性 版本分析 特色 优势 ...
- R语言计算dataframe数据列中各分类的计数(类似pandas value_counts函数功能)
R语言计算dataframe数据列中各分类的计数(类似pandas value_counts函数功能) 目录 R语言计算dataframe数据列中各分类的计数(类似pandas value
- setsockopt()函数功能介绍
setsockopt()函数功能介绍 功能描述:获取或者设置与某个套接字关联的选项.选项可能存在于多层协议中,它们总会出现在最上面的套接字层. 用法: #include <sys/types.h ...
- Jmeter内置函数功能(五)
在企业微信接口创建会议室时. {"name":"18F-会议室","capacity":10,"city":" ...
- tf.pad函数功能介绍
tf.pad()函数主要是对张量在各个维度上进行填充,该函数的参数如下所示: pad(tensor,paddings,mode='CONSTANT',name=None ) 其中: tensor是待填 ...
- fread和fwrite函数功能
fread和fwrite函数功能 用来读写一个数据块. 一般调用形式 fread(buffer,size,count,fp); fwrite(buffer,size,count,fp); ...
- Delphi Format函数功能及用法详解
DELPHI中Format函数功能及用法详解 DELPHI中Format函数功能及用法详解function Format(const Format: string; const Args: array ...
- Unity3D-相关函数功能
函数功能 1.每隔固定时间执行一次,时间间隔固定(0.02s),时间间隔可以修改. 适用性:适合对物体作移动,旋转等物理操作. 函数执行不受渲染影响. private void FixedUpdate ...
- 32 引脚_函数功能:定时器T0的中断服务子程序,使P3.7引脚输出音频方波
void Time0_serve(void ) interrupt 1 using 1 { TH0=(8192-C)/32; //可证明这是13位计数器TH0高8位的赋初值方法 TL0=(81 ...
最新文章
- 将mcomaster配置以apache运行
- .NET简谈组件程序设计之(异步委托)
- mysql 设置 row格式binlog_MySql:Row 格式的 Binlog 解析
- 深度学习的seq2seq模型——本质是LSTM,训练过程是使得所有样本的p(y1,...,yT‘|x1,...,xT)概率之和最大...
- BAT3四大巨头安全负责人破天荒聚在了一起,他们都说了什么?
- 浅谈如何防范电池事故
- 阿里巴巴成立云原生技术委员会,云原生升级为阿里技术新战略
- python:实现简单的web开发demo
- ORACLE 等待事件的分类
- Go Timer使用方法
- java string args_java – 语法“final String … args”是什么意思/做什么?
- jsp fmt标签详解
- 调查了23款加速器,只剩这几款可以白嫖了!
- Ubuntu安装USB无线网卡驱动
- cisco链路聚合 不均衡_Cisco PT 案例七:配置链路聚合 / 负载均衡
- LED显示屏智能化监控运维管理解决方案
- 数据归一化及两种常用归一化方法
- SQL Server2008下载链接以及安装教程
- 如何将硬盘的分区大小设置为整数
- Spark使用Java读Hive写入HBase
热门文章
- 2021年高考语文咸宁查询成绩,2021年咸宁高考状元是谁分数多少分,历年咸宁高考状元名单...
- C -求和公式(整除分块)
- 外贸公司业务员和工厂外贸业务员的差别有哪些?
- mysql indentify_MYSQL Identifying relationship 和non-Identifying relationship 区别
- onekey ghost怎么用
- adb 报错 device unauthorized
- 使用scrapy时,没有crawl命令
- 怎样获取FlightaWare的航班实时数据?
- html教程:关于网页字体的设置
- 解决pdfminer与pdfplumber冲突问题