1. 程式人生 > 程式設計 >Tensorflow tf.dynamic_partition矩陣拆分示例(Python3)

Tensorflow tf.dynamic_partition矩陣拆分示例(Python3)

先給出一個樣例看看

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) 就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。