我想在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但是,我想不出在循环中保存矩阵值的位置。
答案 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))