在Tensorflow中,是否需要control_dependencies()才能使批标准化正常工作?

时间:2019-03-20 03:49:38

标签: tensorflow optimization batch-normalization

一周前,我在服务器上启动了一些任务。根据训练曲线和日志数据,一切看起来都很好。但是,我在代码中发现了一个错误:

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。

我的图是SLIM的inception_v2模型。 (我猜想beta和gamma可以在培训期间进行更新,如果我错了,请纠正我)

我给人的印象是,BatchNorm不受control_dependencies()的影响,并且只要有数据输入就可以开始运行。但是我不记得我从何处得出这个结论。

有人可以在这个问题上提供一些指导吗?

0 个答案:

没有答案