关于Pytorch中dim使用的一点记录
pytorch的许多函数,例如torch.cat()、torch.max()、torch.mul()等,都包含了dim参数。关于dim这个函数,我想许多人跟我一样,一知半解,比较模糊,下面我就把自己关于dim的一点看法记录下来,供大家参考,欢迎各位大佬批评指正。
1.关于dim的取值
这一点很多博客都没有说清,大家可能大概知道dim可以取0,1,-1这些值。那么dim还能取其他值吗?具体的规则是什么呢?不同值代表的不同含义又是什么?
A.关于dim 取值范围:假设有一个n维的tensor,那么它的dim可以取值的范围是[-n,n-1]。举个例子:a=torch.randn(2,3,4),很明显,a是一个3维张量,那么它的dim可以取的值有-3,-2,-1,0,1,2。
B.关于不同dim取值代表的含义:还是上面的例子,对于a来说,dim=0意思就是对a的第1个维度进行操作(也就是2所在的那个维度);dim=1意思就是对a的第2个维度进行操作(也就是3所在的那个维度);dim=2意思就是对a的第3个维度进行操作(也就是4所在的那个维度)。
那么对于dim为负数时,代表的意思又是什么呢?对于dim=-1,代表的是张量最里面的那个维度,对于上面例子的a来说,就是代表了第3个维度(也就是4所在的那个维度);对于dim=-2,代表的是a的第2个维度(也就是3所在的那个维度);对于dim=-3,代表的是a的第1个维度(也就是2所在的那个维度)。
综上,以a为例,dim=0和dim=-3代表的含义一样;dim=1和dim=-2代表的含义一样;dim=2和dim=-1代表的含义一样。
举一反三,对于二维tensor,dim=1和-1一样;dim=0和-2一样。对于一维张量:dim=0和-1结果一样。
2.关于dim的具体操作
知道了dim的取值范围和含义,但是对于指定了dim后如何进行相关操作,应该得到怎么样的结果,我也比较迷糊。所以也查了资料,总结如下:
以三维张量的torch.sum()操作为例:
y = torch.tensor([[[1, 2, 3],[4, 5, 6]],[[1, 2, 3],[4, 5, 6]],[[1, 2, 3],[4, 5, 6]]])
对于y这个三维张量,dim=0是第一维,它可以拆分成3个3个二维张量,那么之后的求和操作就是将这三个二维张量加起来:
得到的结果就是:
>> torch.sum(y, dim=0)
tensor([[ 3, 6, 9],[12, 15, 18]])
PS: 此处可以发现:对于size为(3,2,3)的三维张量y来说,如果指定dim=0操作,那么得到的结果一定是size为(2,3)的张量,相当于把第1维砍掉了。那么由此可知,如果指定dim=1操作,那么得到的结果一定是size为(3,3)的张量,相当于把第2维砍掉了,从下面的结果也可以验证。以此类推。
同理,如执行dim=1的sum()操作,则过程如下:
结果为:
>> torch.sum(y, dim=1)
tensor([[5, 7, 9],[5, 7, 9],[5, 7, 9]])
执行dim=2的sum()操作,则过程如下:
结果为:
>> torch.sum(y, dim=2)
tensor([[ 6, 15],[ 6, 15],[ 6, 15]])
参考资料:
https://towardsdatascience.com/understanding-dimensions-in-pytorch-6edf9972d3be
.理解numpy中的axis, pytorch中的dim - 知乎
pytorch 基本函数中的 dim【详细说明】:以torch.argmax为例_月下花弄影的博客-CSDN博客_argmax(dim=1)
关于Pytorch中dim使用的一点记录相关推荐
- Pytorch中dim的理解
dim的定义 dim 表示维度 x = torch.randn(2, 3, 3)print(x) print(x.size()) print(x.dim()) 输出: tensor([[[-1.694 ...
- Pytorch中torch.nn.Softmax的dim参数含义
自己搞了一晚上终于搞明白了,下文说的很透彻,做个记录,方便以后翻阅 Pytorch中torch.nn.Softmax的dim参数含义
- Pytorch中tensor维度和torch.max()函数中dim参数的理解
Pytorch中tensor维度和torch.max()函数中dim参数的理解 维度 参考了 https://blog.csdn.net/qq_41375609/article/details/106 ...
- Pytorch中维度dim的理解使用
0 引言 pytorch中的维度dim主要被用在torch.softmax和torch.max等等函数中.理清dim的意思对于正确使用这些函数有重要意义. 1 相关博文: Pytorch笔记:维度di ...
- 【Pytorch】| Pytorch中softmax的dim的详细总结
[Pytorch]| Pytorch中softmax的dim的详细总结 关于softmax的理解 一维向量:dim=0和dim=-1结果相同,dim=1和dim=2会报错 二维张量:dim=1和dim ...
- 关于PyTorch中的register_forward_hook()函数未能执行其中hook函数的问题
关于PyTorch中的register_forward_hook()函数未能执行其中hook函数的问题 Hook 是 PyTorch 中一个十分有用的特性.利用它,我们可以不必改变网络输入输出的结构, ...
- 利用 AssemblyAI 在 PyTorch 中建立端到端的语音识别模型
作者 | Comet 译者 | 天道酬勤,责编 | Carol 出品 | AI 科技大本营(ID:rgznai100) 这篇文章是由AssemblyAI的机器学习研究工程师Michael Nguyen ...
- gpu处理信号_在PyTorch中使用DistributedDataParallel进行多GPU分布式模型训练
先进的深度学习模型参数正以指数级速度增长:去年的GPT-2有大约7.5亿个参数,今年的GPT-3有1750亿个参数.虽然GPT是一个比较极端的例子但是各种SOTA模型正在推动越来越大的模型进入生产应用 ...
- 如何利用PyTorch中的Moco-V2减少计算约束
介绍 SimCLR论文(http://cse.iitkgp.ac.in/~arastogi/papers/simclr.pdf)解释了这个框架如何从更大的模型和更大的批处理中获益,并且如果有足够的计算 ...
最新文章
- python删除链表的倒数第k个节点,剑指offer 链表中的倒数第K个节点 Python and C++
- 互联网环境下分布式事务处理系统现状与趋势
- 手把手教你用ECharts画折线图
- 自然语言处理——词性标注实战
- Mac 不能进入睡眠模式,如何修复?
- 解决办法:error: item inner element must either be a resource reference or empty.
- 博士德霸道软件_霸道+远程版7.0
- 无线网检查服务器在那,无线网络服务器地址在哪里找
- 计算机扫盲教程,cmd应用基础 扫盲教程 | Lellansin's 冰森
- 基于PC的机器视觉系统设计
- 个人博客建设——Hexo主题icarus的_config.icarus.yml配置参数注释
- Python PrettyTable 模块
- (memcpy,memmove...)内存函数还不会??别怕,我来助你一臂之力
- 顺序表的c语言结构体描述,顺序表的基本方法实现C语言版
- 2022Q3消费级AR眼镜市场季度分析:国产品牌纷纷发力,市场全面启航
- Android 资源管理利器Resources和AssetManager介绍
- 百度云加速提升网站访问速度
- iWO(联通3G详单及套餐使用情况查询工具)更新至v0.4
- 关于列表,网格显示一律使用RV
- Jenkins+Gradle+Python进行Android自动化打包