Batch Normalization应该在激活函数之前使用还是激活函数之后使用?
Batch Normalization(BN)是深度学习领域最重要的技巧之一,最早由Google的研究人员提出。这个技术可以大大提高深度学习网络的收敛速度。简单来说,BN就是将每一层网络进行归一化,就可以提高整个网络的训练速度,并打乱训练数据,提升精度。但是,BN的使用可以在很多地方,很多人最大的困惑是放在激活函数之前还是激活函数之后使用,著名机器学习领域的博主Santiago总结了这部分需要注意的内容。
结论可以直接看第三部分:
一、BN简介
首先是对BN的简短介绍:Batch Normalization在每一次迭代训练的时候,针对每一个mini-batch的数据,对每一层的输入进行normalize。
二、BN的使用方式
以Keras为例,BN使用如下:
model = Sequential([
Dense(128, input_shape=(4,), activation="relu"),
BatchNormalization(),
Dense(10, activation="softmax")
])
这里我们是在输入层之前,激活函数之后加了一个BN的层。注意,也有人的写法如下:
model = Sequential([
Dense(128, input_shape=(4,)),
BatchNormalization(),
Activation(activations.relu),
Dense(, activation=)
])



