当我们在网络中使用BN是,在训练和测试时归一化时使用的均值和方差不同的:
训练时:是在每个batch中计算均值和方差,
而测试时是使用训练时得到的每个batch的均值和方差的平均值。
即:
在tensorflow中加入BN时需要
训练时将BN层中的is_training 设置为Ture
测试时将BN层中的is_training 设置为Flase
update_ops = tf.get_collection(tf.GraphKeys.UPDATE_OPS)
with tf.control_dependencies(update_ops):
train_op = optimizer.minimize(loss)
BN对batchsize要求很高一般batchsize设置为32效果比较好
在调用预训练模型进行分类时发现batchsize过小对模型影响很大