小编den*_*129的帖子

Keras 中的 BatchNormalization 实现(TF 后端)- 激活之前还是之后?

考虑以下代码片段

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 是在激活函数之前还是之后执行?

为了增加清晰度,

  1. BN 应该在激活之前还是之后应用存在争议,原始(Ioffe 和 Szegedy 2015)论文建议“之前”,但来自以下线程的评论显示了不同的意见。 批量标准化和辍学的顺序?

  2. 在 Keras 文档 ( https://keras.io/layers/normalization/ ) 中,它说“标准化每批上一层的激活,即应用保持平均激活接近 0 和激活标准偏差接近的转换到 1。”

Keras 的文档似乎表明 BN 在激活后应用(即在上面的示例代码中,BN 在第 1 层上的“relu”之后应用)。我想确认是否是这种情况?

另外,是否可以配置BN是在激活函数之前还是之后应用?

谢谢!

deep-learning keras tensorflow batch-normalization

2
推荐指数
1
解决办法
2763
查看次数