关于tensorflow中的转置函数,我能得到一些帮助吗?



张量流函数&;转置&;接受第二个参数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个元素开始。

最新更新