有帮助的话,创作不易,点个小赞
在网上看了好多关于 transpose 函数的解释,只是介绍了怎么计算的,但是没有介绍为啥这样子计算,我有两种看法。
第一种:举例三维矩阵(多维矩阵同理),对于程序员来说,要求对下图用一个数组表示三维矩阵,不假思索肯定就是用三维数组了。
但是有一个问题,不同的程序员,写出来的三维数组可能有三种方式,下面json代码有举例,这里就不写了,这取决于你先写那个面。transpose 函数本质上是调整你原矩阵的面的排序。但是不管先写哪个面,表达的都是同一个矩阵。
第二种:transpose 本质上是在指定空间中的对物体的旋转或翻转,下面举例的是三维空间,其它多维空间也一样
画了一个三维空间,三维矩阵相当于三维空间的一个长方体或者正方体,无论里面的矩阵如何变化,维度都不变
创建一个形状为 (2, 3, 4) 的张量
[ // 2个元素
[ // 3个元素
[ // 4个元素 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12]
],
[
[13, 14, 15, 16],
[17, 18, 19, 20],
[21, 22, 23, 24]
]
]
我们分别将他transpose(0,1) 和 transpose(0,2)
transpose(0,1)
[ // 3个元素
[ // 2个元素
[ // 4个元素 1, 2, 3, 4],
[13, 14, 15, 16]
],
[
[ 5, 6, 7, 8],
[17, 18, 19, 20]
],
[
[ 9, 10, 11, 12],
[21, 22, 23, 24]
]
]
transpose(0,2)
[
[
[ 1, 13],
[ 5, 17],
[ 9, 21]
],
[
[ 2, 14],
[ 6, 18],
[10, 22]
],
[
[ 3, 15],
[ 7, 19],
[11, 23]
],
[
[ 4, 16],
[ 8, 20],
[12, 24]
]
]