0

我有一个 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], [].

你们能帮我找出我做错的明显事情吗?

谢谢!

4

1 回答 1

0

您是result_tensor通过输入 0 来创建的。这意味着您result_tensor是一个标量值,而不是您期望的行。该expected_shape物业没有解决这个问题。

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

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

于 2017-11-09T15:09:11.597 回答