tf.transpose(input, [dimension_1,dimenaion_2,..,dimension_n])
这个函数主要适用于交换输入张量的不同维度用的,如果输入张量是二维,就相当是转置。dimension_n是整数,如果张量是三维,就是用0,1,2来表示。这个列表里的每个数对应相应的维度。如果是[2,1,0],就把输入张量的第三维度和第一维度交换。
import tensorflow as tf
import numpy as npA = np.array([[1, 2, 3], [4, 5, 6]])
x = tf.transpose(A, [1, 0])B = np.array([[[1, 2, 3], [4, 5, 6], [41, 52, 61] , [45, 22, 16]],[[7, 9, 9], [14, 15, 16],[10, 50, 66], [41, 52, 61]]])y = tf.transpose(B, [1, 2, 0])
with tf.Session() as sess:print('A的维度:', (A.shape))print('x的维度:', x.shape)print(sess.run(x))print('B的维度:', (B.shape))print('y的维度:', y.shape)print(sess.run(y))
输出:
对B进行说明,对矩阵B的维度(2,4,3),
第3维为2, 对第3维的每一维,的行为4,列为3
变换前B(0,1,2)= 6 变换后是y的(1,2,0)元素,即B(0,1,2 )=y(1,2,0)=6
变换前B(0,3,2)= 16 变换后是y的(1,2,0)元素,B(0,3,2)=y(3,2,0)=16
变换前B(1,3,2)= 61 变换后是y的(1,2,0)元素,B(1,3,2)=y(3,2,1)=61
变换前B(1,0,2)= 9 变换后是y的(1,2,0)元素,B(1,0,2)=y(0,2,1)=9