圖像處理時數據集中存儲數據的形式爲[channel,image_height,image_width],在tensorflow中使用CNN時咱們須要將其轉化爲[image_height,image_width,channel]的形式,只須要使用tf.transpose(input_data,[1,2,0])python
輸出數據tensor的第i維將根據perm[i]指定。好比,若是perm沒有給定,那麼默認是perm = [n-1, n-2, ..., 0],其中rank(a) = n。git
默認狀況下,對於二維輸入數據,其實就是常規的矩陣轉置操做。github
input_data.dims = (1, 4, 3) perm = [1, 2, 0]函數
由於 output_data.dims[0] = input_data.dims[ perm[0] ] 由於 output_data.dims[1] = input_data.dims[ perm[1] ] 由於 output_data.dims[2] = input_data.dims[ perm[2] ] 因此獲得 output_data.dims = (4, 3, 1) output_data.dims = (4, 3, 1)學習
import tensorflow as tf sess = tf.Session() input_data = tf.constant([[1, 2, 3], [4, 5, 6]]) print(sess.run(tf.transpose(input_data))) # [[1 4] # [2 5] # [3 6]] print(sess.run(input_data)) # [[1 2 3] # [4 5 6]] print(sess.run(tf.transpose(input_data, perm=[1, 0]))) # [[1 4] # [2 5] # [3 6]] input_data = tf.constant([[[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]]]) print('input_data shape: ', sess.run(tf.shape(input_data))) # [1, 4, 3] output_data = tf.transpose(input_data, perm=[1, 2, 0]) print('output_data shape: ', sess.run(tf.shape(output_data))) # [4, 3, 1] print(sess.run(output_data)) # [[[ 1] # [ 2] # [ 3]] # [[ 4] # [ 5] # [ 6]] # # [[ 7] # [ 8] # [ 9]] # # [[10] # [11] # [12]]] """形式爲:[[[],[],[]],[[],[],[]],[[],[],[]],[[],[],[]]]""" """輸入參數: ● a: 一個Tensor。 ● perm: 一個對於a的維度的重排列組合。 ● name:(可選)爲這個操做取一個名字。 輸出參數: ● 一個通過翻轉的Tensor。"""
input_data = tf.constant([[[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]]]) print('input_data shape: ', sess.run(tf.shape(input_data))) # [1, 4, 3] output_data = tf.transpose(input_data) print('output_data shape: ', sess.run(tf.shape(output_data))) # output_data shape: [3 4 1] sess.close()