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

先给出一个样例看看

import tensorflow as tf

raw = 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 tf

label = 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')

控制台输出:

原始的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) 就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Tensorflow矩阵运算实例(矩阵相乘,点乘,行/列累加)

    Tensorflow二维.三维.四维矩阵运算(矩阵相乘,点乘,行/列累加) 1. 矩阵相乘 根据矩阵相乘的匹配原则,左乘矩阵的列数要等于右乘矩阵的行数. 在多维(三维.四维)矩阵的相乘中,需要最后两维满足匹配原则. 可以将多维矩阵理解成:(矩阵排列,矩阵),即后两维为矩阵,前面的维度为矩阵的排列. 比如对于(2,2,4)来说,视为2个(2,4)矩阵. 对于(2,2,2,4)来说,视为2*2个(2,4)矩阵. import tensorflow as tf a_2d = tf.constant([

  • TensorFlow2.0矩阵与向量的加减乘实例

    1.矩阵加法使用 a = np.random.random((3,3)) b = np.random.randint(0,9,(3,3)) ad = tf.add(a,b) 2.矩阵乘法注意 # tensorflow 使用矩阵乘法都必须使用相同类型的数据,否则报错. a = np.random.random((5,3)) b = np.random.randint(0,9,(3,6)) c = tf.tensordot(a.astype(np.float),b.astype(np.float),

  • Tensorflow进行多维矩阵的拆分与拼接实例

    最近在使用tensorflow进行网络训练的时候,需要提取出别人训练好的卷积核的部分层的数据.由于tensorflow中的tensor和python中的list不同,无法直接使用加法进行拼接,后来发现一个函数可以完成tensor的拼接. 函数形式如下: tf.concat(concat_dim,values,name='concat') 其中,第一个参数表示需要拼接的多维tensor,并且可以将多个tensor同事拼接,第二个表示按照哪一个维度拼接(从数字0开始). 例子:创建一个三维的tens

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

    先给出一个样例看看 import tensorflow as tf raw = 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,

  • Tensorflow的常用矩阵生成方式

    我就废话不多说了,直接上代码吧! #全0和全1矩阵 v1 = tf.Variable(tf.zeros([3,3,3]), name="v1") v2 = tf.Variable(tf.ones([10,5]), name="v2") #填充单值矩阵 v3 = tf.Variable(tf.fill([2,3], 9)) #常量矩阵 v4_1 = tf.constant([1, 2, 3, 4, 5, 6, 7]) v4_2 = tf.constant(-1.0,

  • TensorFlow tf.nn.max_pool实现池化操作方式

    max pooling是CNN当中的最大值池化操作,其实用法和卷积很类似 有些地方可以从卷积去参考[TensorFlow] tf.nn.conv2d实现卷积的方式 tf.nn.max_pool(value, ksize, strides, padding, name=None) 参数是四个,和卷积很类似: 第一个参数value:需要池化的输入,一般池化层接在卷积层后面,所以输入通常是feature map,依然是[batch, height, width, channels]这样的shape 第

  • Tensorflow的梯度异步更新示例

    背景: 先说一下应用吧,一般我们进行网络训练时,都有一个batchsize设置,也就是一个batch一个batch的更新梯度,能有这个batch的前提是这个batch中所有的图片的大小一致,这样才能组成一个placeholder.那么若一个网络对图片的输入没有要求,任意尺寸的都可以,但是我们又想一个batch一个batch的更新梯度怎么办呢? 操作如下: 先计算梯度: # 模型部分 Optimizer = tf.train.GradientDescentOptimizer(1) gradient

  • 在TensorFlow中实现矩阵维度扩展

    一般TensorFlow中扩展维度可以使用tf.expand_dims().近来发现另一种可以直接运用取数据操作符[]就能扩展维度的方法. 用法很简单,在要扩展的维度上加上tf.newaxis就行了. foo = tf.constant([[1,2,3], [4,5,6], [7,8,9]]) print(foo[tf.newaxis, :, :].eval()) # => [[[1,2,3], [4,5,6], [7,8,9]]] print(foo[:, tf.newaxis, :].eva

  • TensorFlow卷积神经网络AlexNet实现示例详解

    2012年,Hinton的学生Alex Krizhevsky提出了深度卷积神经网络模型AlexNet,它可以算是LeNet的一种更深更宽的版本.AlexNet以显著的优势赢得了竞争激烈的ILSVRC 2012比赛,top-5的错误率降低至了16.4%,远远领先第二名的26.2%的成绩.AlexNet的出现意义非常重大,它证明了CNN在复杂模型下的有效性,而且使用GPU使得训练在可接受的时间范围内得到结果,让CNN和GPU都大火了一把.AlexNet可以说是神经网络在低谷期后的第一次发声,确立了深

  • TensorFlow和Numpy矩阵操作中axis理解及axis=-1的解释

    目录 1. axis的基本使用 2. 对axis的理解 总结 参考资料 1. axis的基本使用 axis常常用在numpy和tensorflow中用到,作为对矩阵(张量)进行操作时需要指定的重要参数之一.设定axis=-1,0,1...,用来指定执行操作的数据如何划分. 一句话解释:设axis=i,则沿着第i个下标变化的方向进行操作![1] 简单例子就不举了,其他博客有很多,这里举一个稍微复杂一点的三维矩阵的例子: 设embeddings是一个shape=[3,4,5]的矩阵,如下: embe

  • python神经网络之批量学习tf.train.batch函数示例

    目录 学习前言 tf.train.batch函数 测试代码 1.allow_samller_final_batch=True 2.allow_samller_final_batch=False 学习前言 当我在快乐的学习SSD训练部分的时候,我发现了一个batch我看不太懂,主要是因为tfrecords的数据读取方式我不理解,所以好好学一下batch吧 tf.train.batch函数 tf.train.batch( tensors, batch_size, num_threads=1, cap

  • Tensorflow 实现线性回归模型的示例代码

    目录 1.线性与非线性回归 案例讲解 1.数据集 2.读取训练数据Income.csv并可视化展示 3.利用Tensorflow搭建和训练神经网络模型[线性回归模型的建立] 4. 模型预测 1.线性与非线性回归 线性回归 Linear Regression:两个变量之间的关系是一次函数关系的——图像是直线,叫做线性.线性是指广义的线性,也就是数据与数据之间的关系,如图x1. 非线性回归:两个变量之间的关系不是一次函数关系的——图像不是直线,叫做非线性,如图x2. 一元线性回归:只包括一个自变量和

随机推荐