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使用的一点记录相关推荐

  1. Pytorch中dim的理解

    dim的定义 dim 表示维度 x = torch.randn(2, 3, 3)print(x) print(x.size()) print(x.dim()) 输出: tensor([[[-1.694 ...

  2. Pytorch中torch.nn.Softmax的dim参数含义

    自己搞了一晚上终于搞明白了,下文说的很透彻,做个记录,方便以后翻阅 Pytorch中torch.nn.Softmax的dim参数含义

  3. Pytorch中tensor维度和torch.max()函数中dim参数的理解

    Pytorch中tensor维度和torch.max()函数中dim参数的理解 维度 参考了 https://blog.csdn.net/qq_41375609/article/details/106 ...

  4. Pytorch中维度dim的理解使用

    0 引言 pytorch中的维度dim主要被用在torch.softmax和torch.max等等函数中.理清dim的意思对于正确使用这些函数有重要意义. 1 相关博文: Pytorch笔记:维度di ...

  5. 【Pytorch】| Pytorch中softmax的dim的详细总结

    [Pytorch]| Pytorch中softmax的dim的详细总结 关于softmax的理解 一维向量:dim=0和dim=-1结果相同,dim=1和dim=2会报错 二维张量:dim=1和dim ...

  6. 关于PyTorch中的register_forward_hook()函数未能执行其中hook函数的问题

    关于PyTorch中的register_forward_hook()函数未能执行其中hook函数的问题 Hook 是 PyTorch 中一个十分有用的特性.利用它,我们可以不必改变网络输入输出的结构, ...

  7. 利用 AssemblyAI 在 PyTorch 中建立端到端的语音识别模型

    作者 | Comet 译者 | 天道酬勤,责编 | Carol 出品 | AI 科技大本营(ID:rgznai100) 这篇文章是由AssemblyAI的机器学习研究工程师Michael Nguyen ...

  8. gpu处理信号_在PyTorch中使用DistributedDataParallel进行多GPU分布式模型训练

    先进的深度学习模型参数正以指数级速度增长:去年的GPT-2有大约7.5亿个参数,今年的GPT-3有1750亿个参数.虽然GPT是一个比较极端的例子但是各种SOTA模型正在推动越来越大的模型进入生产应用 ...

  9. 如何利用PyTorch中的Moco-V2减少计算约束

    介绍 SimCLR论文(http://cse.iitkgp.ac.in/~arastogi/papers/simclr.pdf)解释了这个框架如何从更大的模型和更大的批处理中获益,并且如果有足够的计算 ...

最新文章

  1. python删除链表的倒数第k个节点,剑指offer 链表中的倒数第K个节点 Python and C++
  2. 互联网环境下分布式事务处理系统现状与趋势
  3. 手把手教你用ECharts画折线图
  4. 自然语言处理——词性标注实战
  5. Mac 不能进入睡眠模式,如何修复?
  6. 解决办法:error: item inner element must either be a resource reference or empty.
  7. 博士德霸道软件_霸道+远程版7.0
  8. 无线网检查服务器在那,无线网络服务器地址在哪里找
  9. 计算机扫盲教程,cmd应用基础 扫盲教程 | Lellansin's 冰森
  10. 基于PC的机器视觉系统设计
  11. 个人博客建设——Hexo主题icarus的_config.icarus.yml配置参数注释
  12. Python PrettyTable 模块
  13. (memcpy,memmove...)内存函数还不会??别怕,我来助你一臂之力
  14. 顺序表的c语言结构体描述,顺序表的基本方法实现C语言版
  15. 2022Q3消费级AR眼镜市场季度分析:国产品牌纷纷发力,市场全面启航
  16. Android 资源管理利器Resources和AssetManager介绍
  17. 百度云加速提升网站访问速度
  18. iWO(联通3G详单及套餐使用情况查询工具)更新至v0.4
  19. 关于列表,网格显示一律使用RV
  20. Jenkins+Gradle+Python进行Android自动化打包

热门文章

  1. Google Earth Engine(GEE)实例代码学习十一——影像全色波段融合提高分辨率(HSV Pan Sharpening)
  2. 相信积累的力量——《把时间当作朋友》读后感
  3. Unreal Engin_画廊制作笔记 _005灯光处理,平行光的设置
  4. 攻防世界-web shrine
  5. 升级打怪秒BOSS-开篇
  6. css-边框(border)
  7. 三阶魔方CFOP复原的C语言算法
  8. linux定时删除文件,如何操作Linux 定时删除指定目下N天前的文件
  9. 单向能ping通,反向不通故障解决过程
  10. 枝枝叶梗高傲的顶着莲蓬像是