首页 > 编程 > Python > 正文

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

2020-02-15 21:20:59
字体:
来源:转载
供稿:网友

先给出一个样例看看

import tensorflow as tfraw = tf.constant([1, 2, 3, 4, 5, 6, 6, 5, 4, 3, 2, 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, 2, 3, 4, 5], 6)'''拆成 [1, 2, 3, 4, 5, 6] [6, 5, 4, 3, 2, 1] '''result_2 = tf.dynamic_partition(tf.reshape(raw, [2, 6]), [0, 1], 2)'''拆成 [1] [2] [3] [4] [5] [6] [6] [5] [4] [3] [2] [1]'''result_3 = tf.dynamic_partition(tf.reshape(raw, [12, 1]), [0, 1, 2, 3, 4, 5, 6, 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, 2, 3, 4, 5, 6]]), array([[6, 5, 4, 3, 2, 1]])][array([[1]]), array([[2]]), array([[3]]), array([[4]]), array([[5]]), array([[6]]), array([[6]]), array([[5]]), array([[4]]), array([[3]]), array([[2]]), array([[1]])]

再给出一个样例

Py3代码:

# one-hot 函数的样例import tensorflow as tflabel = tf.placeholder(tf.int32,[None])# 直接把 输入的序列进行One-Hot的结果one_hot = tf.one_hot(label, 3, 1, 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, [0, 1, 1], 2)[0]one_hot_new_2 = tf.dynamic_partition(one_hot_new, [1, 0, 1], 2)[0]one_hot_new_3 = tf.dynamic_partition(one_hot_new, [1, 1, 0], 2)[0]# 按照每一维大小进行拆分one_hot_1 = tf.dynamic_partition(one_hot_new, [0, 1, 2], 3)[0]one_hot_2 = tf.dynamic_partition(one_hot_new, [0, 1, 2], 3)[1]one_hot_3 = tf.dynamic_partition(one_hot_new, [0, 1, 2], 3)[2]# one_hot_new_3 = tf.dynamic_partition(one_hot_new, [0, 0, 1], 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, 1, 1, 2, 2, 0, 0, 1, 2, 2, 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')            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表