如何将 Batch Normalization 层添加到 Flux.jl 中的模型中

log*_*ick 3 julia flux.jl

我有一个定义的简单模型,但我希望它使用批量标准化,这样我就不必手动计算和提供标准化。该模型目前看起来像:

m = Chain(
  Dense(28^2, 64),
  Dense(64, 10),
  softmax)
Run Code Online (Sandbox Code Playgroud)

我如何编辑此模型以添加 BN 层或一起定义一个新层?

log*_*ick 6

使用 Flux.jl 的内置批量归一化功能,您可以执行以下操作:

m = Chain(
  Dense(28^2, 64),
  BatchNorm(64, relu),
  Dense(64, 10),
  BatchNorm(10),
  softmax)
Run Code Online (Sandbox Code Playgroud)

其中 relu是标准化后发生的逐元素激活。relu您可以在如下示例中阅读我们为什么使用该函数: https://stats.stackexchange.com/questions/226923/why-do-we-use-relu-in-neural-networks-and-how-do-我们使用它BatchNorm在 Flux.jl 文档中了解有关该函数的更多信息。