pytorch中的dim=0,=1,=2,在高纬度上的一些个人理解

编译工具:Pycharm
张量工具:pytorch

目前大部分博主对dim的讲解大多停留在低维,在这里我说一下高维的情况,先看图:
在这里插入图片描述
在上图中,我们用pytorch中声明了一个张量a,a具有4列、3行、两页、1块。其中,行与列不用再解释:
页:也就是“面”,比如上图,由3行4列组成一页,或者是说组成一面。
块:也就是“体”,比如上图,由两页(两面)组成一块,或者说是组成一个“体”。
以上想法来自初中几何的一句话:点动成线,线动成面,面动成体。其中有了块(体)也就有了厚度。
如果再往上加1维,也就是第五维,我称之为“区”:几个“块”组成一个“区”。

dim
首先在低维情况

不少博主总是说:dim=0表示为“行”这一维度,dim=1则表示“列”这一维度,但是这一说法其实不完全正确,甚至在高维时候还会造成误解。
看图:
在这里插入图片描述

在上述sum累加中,dim=0表示行,也即:针对行进行操作,也即“累加”操作,可以这么理解:针对行操作也即把“一行”看作一个不可分割的原子,所以 torch.sum(d, dim=0)表示为:第一行+第二行+…+最后一行=结果(一个一维向量)。当dim=1时同上。

高维情况下

先看图
在这里插入图片描述
在上述四维情况下,dim=0时候,肯定没有代表行!!!而是代表维度数的第一个下标值,在这里插入图片描述
也就是这里,代表着“块”,由于本身a就只有一块,所以累加之后数值不变,但是原本的4个中括号变为3个中括号,也即减了一维,也就是该“区”内多个块作为原子相加(本例中只有一个块)最后生成一个块,因此由4维降至3维。
当dim=1时候,则代表第二个维度下标值,表示“页”:也就是将该块内的每一页作为原子,相加,最后只生成了一个原子页(本例内只有两页,因此两页相加合为一页),那么,该“块”也就降维成了“页”,维度减一。
dim=2时候,也即:dim表示为“行”,可以看到,在这两页中,每一页的三行作为原子相加,生成结果为一行,“页”变为“行”,维度减一。
dim=3时,dim表示为“列”,可以看到每一页的四列相加,结果为一“列”,但是显示的结果却并非是“竖着”的,而是将原本理论上“应该”竖着的给“横”放过来了。

推理更高维度

区(4维):包含块、页、行列
块(3维):包含页、行列
行与列(1维)在维度上是平等的
5维:大区,6维:大大区,:7维:大大大区,8维:大大…随便怎么叫吧。
总之加一维都是将下标值再多一个数字,dim等于几也就是等于第几个下标所代表的维度。
假如进行的操作不是sum累加,而是其他如连乘、拼接等操作,大抵类似:都是将该维度内的一个单位看作原子,然后在更高1个维度下进行连乘、拼接等操作。比如,你如果针对“行”这一维度进行操作,那就只能对这一页内部的行操作,而与其他页的行不相干扰:例如本例内有两页,可以把这两页看作两个“平行宇宙”,你在这两个平行宇宙内进行操作而两个宇宙之间的行不得互相干扰,所以才说只能在更高1维“下”进行操作!

如果本文对您有所帮助,希望点个赞再走,谢谢!!!

  • 13
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值