考虑以下代码片段
model = models.Sequential()
model.add(layers.Dense(256, activation='relu')) # Layer 1
model.add(BatchNormalization())
model.add(layers.Dense(128, activation='relu')) # Layer 2
Run Code Online (Sandbox Code Playgroud)
我正在使用带有 Tensorflow 后端的 Keras。
我的问题是 - 在 Keras 的实现中,BN 是在激活函数之前还是之后执行?
为了增加清晰度,
BN 应该在激活之前还是之后应用存在争议,原始(Ioffe 和 Szegedy 2015)论文建议“之前”,但来自以下线程的评论显示了不同的意见。 批量标准化和辍学的顺序?
在 Keras 文档 ( https://keras.io/layers/normalization/ ) 中,它说“标准化每批上一层的激活,即应用保持平均激活接近 0 和激活标准偏差接近的转换到 1。”
Keras 的文档似乎表明 BN 在激活后应用(即在上面的示例代码中,BN 在第 1 层上的“relu”之后应用)。我想确认是否是这种情况?
另外,是否可以配置BN是在激活函数之前还是之后应用?
谢谢!