Как обрабатывать вызовы модели и потери функций и метрики с пустыми данными - PullRequest
0 голосов
/ 18 октября 2019

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

Поэтому мне интересно, почему потери и метрики вызываются при компиляции, и есть ли способ справиться с этой ситуацией?

1 Ответ

0 голосов
/ 18 октября 2019

Понял, что мне просто нужно передать target_tensors с желаемыми формами для компиляции, хотя я использую fit_generator и Sequence.

...