以pytorch 中tensor 为例
1、上来先看一个图,tensor在内存中存储的方式: 这个图一定要理解。
无论多少维的tensor,在内存都是这么存的,“指针”里面会有 dim的信息(如3行2列)
2、来一个四维矩阵: 4*3*2*5 a = torch.arange(1,121).view(4,3,2,5),120个数,长啥样子,自己代码一下吧,太长了。分类的原理:
(1) 先将120个数分为4等分,每一部分30个数(第一维是4)
(2) 再将每分30个数分成3等分,每部分10个数(第二维是3)
(3) 每部分的10个数分成2等分,每部分5个数(第三维是2)
(4) 每部分的5个数5等分,每部分1个数(第四维是1)
3、a.transpose(0,3) :让大家理解这个计算过程:
(1) 打开excel,将120个数,按照“ 1 ”的方式,列出来,一下只是部分截图,建议大家自己做一遍
(2)用excel进行排序:a.transpose(0,3),就是第0维和第3维交换。
排序顺序:dim3,dim1,dim2,dim0 : 多条件排序,都是按照升序排列。
关于矩阵底层变换原理和逻辑,比较抽象,不太容易解释,有兴趣的建议在b站或者其他视频平台看看“线性代数的本质”3bluebrown做的动画视频(看翻译版)。