Требуется ли control_dependencies () в Tensorflow для корректной работы нормализации партии? - PullRequest
0 голосов
/ 20 марта 2019

Я запустил несколько задач на нашем сервере неделю назад.По кривым тренировок и данным логов все выглядит отлично.Однако я обнаружил в своем коде ошибку:

update_ops = tf.get_collection(tf.GraphKeys.UPDATE_OPS, scope="ABC")
with tf.control_dependencies(update_ops):
    optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate)
    grads = optimizer.compute_gradients(net_loss, var_list=self.tvars)

Поскольку в моем графике не было области действия "ABC", update_ops будет пустым списком [].Поэтому все, что находится внутри «with tf.control_dependencies ()», не будет зависеть от update_ops.

Однако во время начальной отладки я понял, что даже если я использовал правильную область действия для update_ops, все полученные правильные update_ops всесвязанные с пакетной нормой операции, такие как AddMovingAvg.

Мой график - это модель inception_v2 из SLIM.(Я думаю, бета и гамма могут быть обновлены во время тренировки, пожалуйста, исправьте меня, если я ошибаюсь)

У меня сложилось впечатление, что на BatchNorm не влияет control_dependencies (), и он запускается всякий раз, когда поступают данные.Но я не могу вспомнить, откуда у меня такой вывод.

Может ли кто-нибудь дать несколько советов по этому вопросу?

...