你应该明白为什么
batch_norm
需要在中添加操作
UPDATE_OPS
.
tf.layers.batch_normalization
函数将生成四个变量,即
gamma
,
beta
,
moving_mean
和
moving_variance
只有
伽马
,
贝塔
在
tf.GraphKeys.TRAINABLE_VARIABLES
.
在培训阶段,
移动平均数
和
移动方差
也需要更新,这样如果我们设置
training
参数为1
tf.layers.batch_规范化
,函数将相应的ops添加到
tf.GraphKeys.UPDATE_OPS
用于更新
移动平均数
和
移动方差
,而如果我们设置
训练
参数为0
tf.layers.batch_规范化
,函数不会对
tf.graphkeys.update_操作
,因为它不需要更新
移动平均数
和
移动方差
在测试阶段。
至于
group_norm
和
instance_norm
,他们只有
贝塔
和
伽马
变量,已经在
tf.graphkeys.trainable_变量
,这样就不需要在
tf.graphkeys.update_操作
.