我有一个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], [].
你能帮助我找到我做错的显而易见的事吗?
谢谢!
答案 0 :(得分:0)
您通过提供0来创建result_tensor
。这意味着您的result_tensor
是标量值,而不是您期望的行。 expected_shape
属性无法解决此问题。
相反,您应该将result_tensor
声明为tf.zeros([1, 25088])
,因为25088似乎是您要追加的行的大小。然后,一旦获得所有结果,只需通过切片删除第一行。
注意:tf.Variable
类不是为了存储结果,而是为了向图表添加可训练的值。在我使用Tensorflow的所有实验中,我从未使用它。从来没有。 tf.layers
模块通常包含我需要的所有内容。