张量流函数&;转置&;接受第二个参数perm。谁能举几个例子给我解释一下吗?
在更大的矩阵上演示更容易。所以考虑一个(4,2,3)矩阵
xx = tf.constant([[[ 1, 2, 3],
[ 4, 5, 6]],
[[ 7, 8, 9],
[10, 11, 12]],
[[ 13, 14, 15],
[16, 17, 18]],
[[ 19, 20, 21],
[22, 23, 24]]])
print('Shape of matrix:',xx.shape)
tf.transpose(xx)
>>> (4, 2, 3)
<tf.Tensor: shape=(3, 2, 4), dtype=int32, numpy=
array([[[ 1, 7, 13, 19],
[ 4, 10, 16, 22]],
[[ 2, 8, 14, 20],
[ 5, 11, 17, 23]],
[[ 3, 9, 15, 21],
[ 6, 12, 18, 24]]], dtype=int32)>
如果你注意到上面,(4,2,3)矩阵变成(3,2,4)。默认情况下,tensorflow会反转矩阵的形状。
那么tf.transpose(xx,perm=[2,1,0])
和tf.transpose(xx)
的效果是一样的
例如,tf.transpose(xx,perm=[1,2,0])
将改变形状为(2,3,4)。
如果你在想象这个变换是什么样子的时候有困难,你需要做一些练习。
要获取一个实例,
tf.transpose(xx,perm=[1,2,0])
>>>tf.Tensor(
[[[ 1 7 13 19]
[ 2 8 14 20]
[ 3 9 15 21]]
[[ 4 10 16 22]
[ 5 11 17 23]
[ 6 12 18 24]]], shape=(2, 3, 4), dtype=int32)
注意到4是最后一位,所以我们现在需要在内部数组中有4个元素。因此,原始xx
(1,7,13,19)中4个数组的第0个元素放到这里作为第一行。
由于3排在第二位,内部矩阵将有3行,从第一个数组的第0个元素开始。