Tensorflow:使用多个tf.concat创建矩阵

时间:2016-12-10 19:09:26

标签: matrix tensorflow concatenation

我想在tenoflow中创建一个2-D矩阵,连接由for-loop生成的多个1-D数组。 比方说,例如,在每个循环中产生一个shape =(1,5)的数组([1,1,1,1,1])。 我需要最终获得3个循环:

[[1,1,1,1,1]
  [1,1,1,1,1]
  [1,1,1,1,1]]

我实际上需要一个解决方案,在每个循环中在矩阵中添加一个新行。如何使用张量流创建?我想到了tf.concat但是,我想不出在循环中保存矩阵值的位置。

2 个答案:

答案 0 :(得分:2)

如果你有大量的循环,你需要连接数组。让我们从你的第一个只有一个维度的向量.as-console-wrapper { max-height: 100% !important; }开始。首先使用tf.reshape()将其重塑为维度v1

(1, vector_size)

现在,您可以对向量v1 = tf.reshape(v1, [1, vector_size]) 执行相同的操作,并使用tf.concat()v2上的两个数组连接起来。

axis=0

注意我在这里重用了v1 = tf.concat(0, [v1, v2]) 。这将在您的循环中,v1将是新变量。

如果你有一个固定数量较少的数组(在问题的上下文中循环),你可以通过tf.stack()来完成。

假设您的第一个循环产生数组v2,第二个v1和第三个v2。 您可以按如下方式使用v3

tf.stack()

答案 1 :(得分:1)

您想要的可能是tf.tile,以下是示例:

a = tf.reshape(tf.range(10), (-1, 10))
b = tf.tile(a, (5, 1))
with tf.Session() as sess:
    print(sess.run(a))
    print(sess.run(b))