0
嗨。我对tf很陌生,问题是如何将批量归一化应用于推理。我在训练和测试过程中使用tensorflow进行批量归一化。代码如下,你可以看到,我用不同的mean和var值来对待培训和测试。现在训练已经完成,我想将模型应用于练习。比如使用演示加载ckpt文件并测试一个例子。在这种情况下,我怎样才能使这一个案例正常化?是否有任何方法可以在每次训练和恢复之后保存BN的均值和变量?非常非常感谢你!Tensorflow如何将批规范化应用于推理
fc_mean, fc_var = tf.nn.moments(
input,
axes=[0],
)
scale = tf.Variable(tf.ones([out_size]))
shift = tf.Variable(tf.zeros([out_size]))
epsilon = 0.001
ema = tf.train.ExponentialMovingAverage(decay=0.5)
def mean_var_with_update():
ema_apply_op = ema.apply([fc_mean, fc_var])
with tf.control_dependencies([ema_apply_op]):
return tf.identity(fc_mean), tf.identity(fc_var)
mean, var = tf.cond(train_phase,
mean_var_with_update,
lambda: (ema.average(fc_mean),
ema.average(fc_var)
)
)
input_BN = tf.nn.batch_normalization(input, mean, var, shift, scale, epsilon)
对不起,我现在有点乱了。在本文中,它通过设置scale = sqrt(var),shift = mean表示,我们可以恢复原始激活。所以在张量流训练过程中,模型收敛后的尺度和位移值会有多大? – syntaxError