Моя цель - как правильно обучаться с пакетными слоями нормализации в TensorFlow (TensorFlow версия 1.13.1 для Python в графическом режиме), используя рекомендуемый класс tf.keras.layers.BatchNormalization (https://www.tensorflow.org/api_docs/python/tf/keras/layers/BatchNormalization).
Более старый рекомендуемый подход заключался в использовании tf.layers.batch_normalization. В документации (https://www.tensorflow.org/api_docs/python/tf/layers/batch_normalization) указано, что в настоящее время она устарела вместо tf.keras.layers.BatchNormalization.
При использовании более старого класса в документации указывается, что мы должны явно добавить зависимость от операций обновления среднего и дисперсии, которые в противном случае были бы висячими узлами вне каких-либо зависимостей в обучающих операциях:
update_ops_including_from_batch_norms = tf.get_collection(tf.GraphKeys.UPDATE_OPS)
with tf.control_dependencies(update_ops):
my_optimizer = tf.super_cool_optimizer(loss)
Мой вопрос: нужна ли эта явная зависимость от UPDATE_OPS при обучении пакетных норм в TF 1.13 с помощью tf.keras.layers.BatchNormalization? Я не вижу этого упоминания в документации, однако, мне было бы намного удобнее, если бы кто-то точно знал (и даже лучше, если бы мог указать на официальную документацию или код), что об этих рабочих зависимостях неявно заботятся.