Что на самом деле делает tf.keras.backend.set_learning_phase?

#tensorflow #tensorflow2.0

Вопрос:

Я пытаюсь использовать Efficientnet для обнаружения некоторых объектов и загружаю его контрольную точку перед предоставлением некоторых изображений. Если я ставлю tf.keras.backend.set_learning_phase(True) перед тем, как делать прогнозы, это приводит к плохим прогнозам. При этом я имею в виду, что у него есть только 2 обнаружения с оценкой выше порога 0,5 (на изображениях около 10 человек). Однако, если у меня есть tf.keras.backend.set_learning_phase(False) и я делаю прогнозы, у него гораздо больше обнаружений (около 8), а пороговое значение колеблется от 0,7 до 0,94. Почему это происходит на основе tf.keras.backend.set_learning_phase() звонка?

Спасибо за любую помощь!

Ответ №1:

На самом деле это устаревшая функция в новых версиях. Некоторые уровни(BatchNorm — Отсев) ведут себя по-разному при обучении и тестировании.

tf.keras.backend.set_learning_phase(True) Вы фактически оставляете их в режиме тренировки, чтобы они были активны. Вы хотите, чтобы они были отключены при составлении прогноза.

Для получения дополнительной информации проверьте источник.