Tensorflow tf.dynamic_partition矩陣拆分示例(Python3)
阿新 • • 發佈:2020-02-07
先給出一個樣例看看
import tensorflow as tf raw = tf.constant([1,2,3,4,5,6,1]) ''' 拆成 [1,2] [3,4] [5,6] [6,5] [4,3] [2,1] ''' result_1 = tf.dynamic_partition(tf.reshape(raw,[6,2]),[0,1,5],6) ''' 拆成 [1,1] ''' result_2 = tf.dynamic_partition(tf.reshape(raw,[2,6]),1],2) ''' 拆成 [1] [2] [3] [4] [5] [6] [6] [5] [4] [3] [2] [1] ''' result_3 = tf.dynamic_partition(tf.reshape(raw,[12,1]),7,8,9,10,11],12) with tf.Session() as sess: print(sess.run(result_1)) print(sess.run(result_2)) print(sess.run(result_3))
結果
[array([[1,2]]),array([[3,4]]),array([[5,6]]),array([[6,5]]),array([[4,3]]),array([[2,1]])] [array([[1,1]])] [array([[1]]),array([[2]]),array([[3]]),array([[4]]),array([[5]]),array([[6]]),array([[1]])]
再給出一個樣例
Py3程式碼:
# one-hot 函式的樣例 import tensorflow as tf label = tf.placeholder(tf.int32,[None]) # 直接把 輸入的序列進行One-Hot的結果 one_hot = tf.one_hot(label,0) # 進行轉置 one_hot_new = tf.transpose(one_hot,perm=[1,0]) one_hot_new = tf.cast(one_hot_new,tf.float32) # one_hot_new[2] = one_hot_new[2] * 1.5 # 按照每一維的大小進行拆分 one_hot_new_1 = tf.dynamic_partition(one_hot_new,2)[0] one_hot_new_2 = tf.dynamic_partition(one_hot_new,[1,2)[0] one_hot_new_3 = tf.dynamic_partition(one_hot_new,0],2)[0] # 按照每一維大小進行拆分 one_hot_1 = tf.dynamic_partition(one_hot_new,2],3)[0] one_hot_2 = tf.dynamic_partition(one_hot_new,3)[1] one_hot_3 = tf.dynamic_partition(one_hot_new,3)[2] # one_hot_new_3 = tf.dynamic_partition(one_hot_new,2)[2] # 拼接以上兩維得到原來的結果 one_hot_new = tf.concat([one_hot_new_1,one_hot_new_2],axis=0) if __name__ == '__main__': with tf.Session() as sess: sess.run(tf.global_variables_initializer()) one_hot_out,one_hot_new_out,one_hot_new_1_out,one_hot_new_2_out,one_hot_new_3_out,one_hot_1_out,one_hot_2_out,one_hot_3_out = sess.run([one_hot,one_hot_new,one_hot_new_1,one_hot_new_2,one_hot_new_3,one_hot_1,one_hot_2,one_hot_3],feed_dict={label: [0,2]}) print("原始的One-hot結果:") print(one_hot_out,end='\n\n') print("以上的結果.T:") print("方法一拆分:") print(one_hot_new_out,end='\n\n') print("拆分(1)維:") print(one_hot_new_1_out,end='\n\n') print("拆分 (2)維:") print(one_hot_new_2_out,end='\n\n') print("拆分 (3)維:") print(one_hot_new_3_out,end='\n\n') print("方法二拆分:") print("拆分(1)維:") print(one_hot_1_out,end='\n\n') print("拆分 (2)維:") print(one_hot_2_out,end='\n\n') print("拆分 (3)維:") print(one_hot_3_out,end='\n\n')
控制檯輸出:
原始的One-hot結果: [[1 0 0] [0 1 0] [0 1 0] [0 0 1] [0 0 1] [1 0 0] [1 0 0] [0 1 0] [0 0 1] [0 0 1] [1 0 0] [0 0 1]] 以上的結果.T: 方法一拆分: [[ 1. 0. 0. 0. 0. 1. 1. 0. 0. 0. 1. 0.] [ 0. 1. 1. 0. 0. 0. 0. 1. 0. 0. 0. 0.]] 拆分(1)維: [[ 1. 0. 0. 0. 0. 1. 1. 0. 0. 0. 1. 0.]] 拆分 (2)維: [[ 0. 1. 1. 0. 0. 0. 0. 1. 0. 0. 0. 0.]] 拆分 (3)維: [[ 0. 0. 0. 1. 1. 0. 0. 0. 1. 1. 0. 1.]] 方法二拆分: 拆分(1)維: [[ 1. 0. 0. 0. 0. 1. 1. 0. 0. 0. 1. 0.]] 拆分 (2)維: [[ 0. 1. 1. 0. 0. 0. 0. 1. 0. 0. 0. 0.]] 拆分 (3)維: [[ 0. 0. 0. 1. 1. 0. 0. 0. 1. 1. 0. 1.]]
以上這篇Tensorflow tf.dynamic_partition矩陣拆分示例(Python3) 就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。