我是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以统一序列类型的其他方法?
非常感谢提前!
答案 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。
为了进一步解释,你必须提供更多的代码,但是错误的概念已经突出显示。