使用tensorflow每晚(2.0),在对model.compile的调用中有自定义损失和指标。当运行时:
tf.config.experimental_run_functions_eagerly(True)
一切正常。如果我不启用实验性急切执行功能,则出于某种原因调用:
self._model.compile(optimizer="Adam",
loss=[
balanced_cross_entropy,
intersection_over_union,
angle_loss
],
metrics=[
[image_logging_metric('RBOX Score Map')],
[image_logging_metric('RBOX Shapes')],
[image_logging_metric('RBOX Angles')],
])
用空张量调用我的所有损失和度量函数,这些张量的尺寸与预期输入的形状不匹配。我找不到关于以图形方式不同地编写损耗和度量的任何文档,也无法理解为什么将它们作为编译的一部分来调用。
要注意的另一件事是我具有动态输入形状(None,None,None,3),并且我猜测这就是为什么传递给我的函数的尺寸出乎意料的小,但是未指定的形状是有意的并且可以在渴望执行,因为一切都由卷积扩展。
所以我想知道,为什么要在编译时调用损耗和度量标准,并且有一种处理这种情况的预期方法?
答案 0 :(得分:0)
弄清楚,即使我使用fit_generator和Sequence,我也只需要传递具有所需形状的target_tensor即可进行编译。