将行聚合成tensorflow变量

时间:2017-11-09 13:28:19

标签: tensorflow neural-network conv-neural-network tensorflow-gpu tensorflow-slim

我有一个tf.Variable张量,它应该作为一个结果聚合器。

我的想法是,我将使用批量数据在图表上执行操作,结果应作为新行附加到我的结果变量。

因为在开头变量应该为空,我将它初始化为:

result_tensor = tf.Variable(0, expected_shape=[0, 5], dtype=tf.float32)

然后,我所做的是沿轴0连接新行(作为新行):

total_output = tf.concat([result_tensor, operation], 0)

最后,我重新分配变量:

assign_op = tf.assign(result_tensor, total_output, validate_shape=False)

然而,当所有这些都运行时,我收到以下错误:

ValueError: Shape must be rank 0 but is rank 2 for 'concat_1' (op: 'ConcatV2') with input shapes: [], [?,25088], [].

你能帮助我找到我做错的显而易见的事吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

您通过提供0来创建result_tensor。这意味着您的result_tensor是标量值,而不是您期望的行。 expected_shape属性无法解决此问题。

相反,您应该将result_tensor声明为tf.zeros([1, 25088]),因为25088似乎是您要追加的行的大小。然后,一旦获得所有结果,只需通过切片删除第一行。

注意:tf.Variable类不是为了存储结果,而是为了向图表添加可训练的值。在我使用Tensorflow的所有实验中,我从未使用它。从来没有。 tf.layers模块通常包含我需要的所有内容。