来自tf.cond

时间:2017-11-28 17:01:15

标签: python tensorflow

我是Tensorflow的新手,我希望有人可以帮助我调试我遇到的快速错误。

def _examples(file_name_queue, reader, num_threads, read_batch_size):

  with ops.name_scope('read'):
    for _ in range(num_threads):
      keys, values = tf.cond(
          math_ops.less(1, read_batch_size),
          lambda: reader().read_up_to(file_name_queue, read_batch_size),
          lambda: reader().read(file_name_queue)
      )
# More after this but dropping for brevity.

但是我得到的错误似乎是来自同一个类的tf.cond中的true_fn和false_fn。

  

TypeError:true_fn和false_fn的返回类型不兼容:两者   结构不具有相同的序列类型。第一种结构有类型   ,而第二   结构有类型。

解决此类问题的最佳方法是什么?有没有办法转换这些类,重写true_fn / false_fn,或者修改lambdas以统一序列类型的其他方法?

非常感谢提前!

1 个答案:

答案 0 :(得分:1)

如果您阅读tf.cond的文档,您将获得此说明:

true_fn和false_fn都返回输出张量列表。 true_fn和false_fn必须具有相同非零数字和类型的输出

现在让我们看一下TFRecordReader的文档 这些是以下函数的返回类型:

read_up_to:一个Tensors元组(键,值)。键:一维字符串张量。值:1-D字符串Tensor。

read:一个Tensors元组(键,值)。 key:字符串标量Tensor。 value:字符串标量Tensor。

为了进一步解释,你必须提供更多的代码,但是错误的概念已经突出显示。