Документация tf.layers.batch_normalization гласит, что она будет удалена в будущей версии и должна быть заменена на tf.keras.layers.BatchNormalization , но я не могу найтиспособ заменить функциональность с помощью тензор потока низкого уровня API.
import tensorflow as tf
bn = tf.layers.batch_normalization(tf.constant([0.0]), training=True)
print(tf.get_collection(tf.GraphKeys.UPDATE_OPS))
, который выводит:
[<tf.Operation 'batch_normalization/AssignMovingAvg' type=AssignSub>,
<tf.Operation 'batch_normalization/AssignMovingAvg_1' type=AssignSub>]
Если вместо этого мы используем керас, как предлагается в документации
bn = tf.keras.layers.BatchNormalization(axis=-1)(tf.constant([0.0]), training=True)
мы получаем пустой вывод:
[]
Так как UPDATE_OPS пуст, модель не может обновить нормализацию партии moving_avg_mean и moving_avg_variance во время обучения с использованием керас (что приводит к гораздо более высокой ошибке теста).Любое предложение, как решить эту проблему, очень приветствуется!
Приведенный выше пример взят из более ранней статьи о том, как использовать tf.layers.batch_normalization