形状(1,)和()与cond运算符不兼容

时间:2016-10-08 08:51:39

标签: python-3.x tensorflow

我想跳过一些具有特定标签的数据(例如if label> = 7或其他)。我的代码在这里:

true = tf.constant(True)
less_op = tf.less(label, tf.constant(delimiter))
label = tf.cast(
    tf.slice(record_bytes, [0], [label_bytes]), tf.int32)
tf.cond(less_op, lambda: true, lambda: true)

并且在第4行我有错误:ValueError: Shapes (1,) and () are not compatible。我认为它是由less_op引起的(如果我用true代码替换它的话)。我还调查了label存在一些问题:代码less_op = tf.less(tf.constant(1), tf.constant(delimiter))完美无缺。

1 个答案:

答案 0 :(得分:2)

Tensorflow期望它的形状为None或[]而不是(1,)。它应该在我的opionion中修复它的奇怪行为,因为tf.less返回一个形状(1,)的张量而不是shape()。

改变这个:

tf.cond(less_op, lambda: true, lambda: true)

到此:

tf.cond(tf.reshape(less_op,[]), lambda: true, lambda: true)