tensorflow之transpose的使用

函数作用是对矩阵进行转换操作



import tensorflow as tf
import numpy as np

'''
 x = [[1,3,5],
    [2,4,6]]     二维数组为2行3列的矩阵
    对于二维数组,perm=[0,1],0代表二维数组的行,1代表二维数组的列
    tf.transpose(x, perm=[1, 0]),结果为[[1,2],
                                            [3,4],
                                            [5,6]]   
      perm[1,0]代表将数组的行和列进行交换,代表矩阵的转置,转置之后为3行2列

 '''

'''
     x = [[[1,2,3,4],[5,6,7,8],[5,6,7,8]],
      [[9,12,13,14],[15,16,17,18],[5,6,7,8]]]   此3维数组为2x3x4,可以看成是两个 3x4的二维数组
    对于二维数组,perm=[0,1,2],0代表三维数组的高(即为二维数组的个数),1代表二维数组的行,2代表二维数组的列
    tf.transpose(x, perm=[1,0,2])代表将三位数组的高和行进行转置,

'''

z = np.array([
    [[1,2,3,4],[5,6,7,8],[5,6,7,8]],
    [[9,10,11,12],[13,14,15,16],[17,18,19,20]]
])
y = tf.transpose(z, [1, 0, 2]) # 2*3*4  3*2*4
'''
    是高与行的转化,把行看成常数 
    [a1,a2,a3],  ---  [a1,b1],[a2,b2],[a3,b3]
    [b1,b2,b3]
'''
y1 = tf.transpose(z, [2, 1, 0])

with tf.Session() as sess:

    print(sess.run(y))

    '''
    [[[ 1  2  3  4]
      [ 9 10 11 12]]
    
     [[ 5  6  7  8]
      [13 14 15 16]]
    
     [[ 5  6  7  8]
      [17 18 19 20]]]
    '''
    print(sess.run(y1))

    '''
    [[[ 1  9]
      [ 5 13]
      [ 5 17]]
    
     [[ 2 10]
      [ 6 14]
      [ 6 18]]
    
     [[ 3 11]
      [ 7 15]
      [ 7 19]]
    
     [[ 4 12]
      [ 8 16]
      [ 8 20]]]
    
    
    '''

# x = [
#     [[1,2,3,4],[5,6,7,8],[5,6,7,8]],
#     [[9,10,11,12],[13,14,15,16],[17,18,19,20]]
# ]

猜你喜欢

转载自blog.csdn.net/qq_30638831/article/details/81515082
今日推荐