如何使用空数据处理model.compile调用损失和度量函数

时间:2019-10-17 23:38:10

标签: python tensorflow loss-function

使用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),并且我猜测这就是为什么传递给我的函数的尺寸出乎意料的小,但是未指定的形状是有意的并且可以在渴望执行,因为一切都由卷积扩展。

所以我想知道,为什么要在编译时调用损耗和度量标准,并且有一种处理这种情况的预期方法?

1 个答案:

答案 0 :(得分:0)

弄清楚,即使我使用fit_generator和Sequence,我也只需要传递具有所需形状的target_tensor即可进行编译。