Я запустил несколько задач на нашем сервере неделю назад.По кривым тренировок и данным логов все выглядит отлично.Однако я обнаружил в своем коде ошибку:
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 (), и он запускается всякий раз, когда поступают данные.Но я не могу вспомнить, откуда у меня такой вывод.
Может ли кто-нибудь дать несколько советов по этому вопросу?