目录
简介
《Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift》
机器学习领域有个很重要的假设:IID独立同分布假设,就是假设训练数据和测试数据是满足相同分布的,这是通过训练数据获得的模型能够在测试集获得好的效果的一个基本保障。那BatchNorm的作用是什么呢?
BatchNorm就是在深度神经网络训练过程中使得每一层神经网络的输入保持相同分布的。
白化
之前的研究表明如果在图像处理中对输入图像进行白化(Whiten)操作的话——所谓白化,就是对输入数据分布变换到0均值,单位方差的正态分布。
实现时需要注意的问题
https://blog.csdn.net/huitailangyz/article/details/85015611
实现细节
Note: when training, the moving_mean and moving_variance need to be updated.
By default the update ops are placed in tf.GraphKeys.UPDATE_OPS
, so they
need to be added as a dependency to the train_op
. For example:
update_ops = tf.get_collection(tf.GraphKeys.UPDATE_OPS)
with tf.control_dependencies(update_ops):
train_op = optimizer.minimize(loss)