При использовании tenorflow nightly (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, 3), и я предполагаю, что именно поэтому размеры, передаваемые моим функциям, неожиданно малы, но неопределенная форма является преднамеренной и работает с нетерпением, поскольку все масштабируется с помощью сверток.
Поэтому мне интересно, почему потери и метрики вызываются при компиляции, и есть ли способ справиться с этой ситуацией?