我现在读了一本名为“ Hands-On Machine Learning with Scikit-Learn and TensorFlow ”的书,在第 11 章,作者写了以下关于批量标准化的解释:
请注意,默认情况下,batch_norm() 仅对输入进行中心化、规范化和移位;它不会缩放它们(即,γ 固定为 1)。这对于没有激活函数或使用 ReLU 激活函数的层是有意义的,因为下一层的权重可以负责缩放,但对于任何其他激活函数,您应该将 "scale": True 添加到 bn_params。
该batch_norm函数来自TensorFlow,仅供参考。作者解释说,不应该在 ReLU 激活函数上设置 γ 参数。
但是,我不明白为什么在 ReLU 上,下一层的权重可以处理缩放...我知道下一层从 ReLU 输出中获取输入,即max(0, x). 为什么它会处理缩放,因此不需要在 ReLU 上设置 γ 参数?