首页 > 解决方案 > 神经网络批量标准化中 Gamma 和 Beta 的初始化

问题描述

我正在自己制作一个神经网络。我现在被困在批量标准化过程中。问题是我无法找到任何好的 gamma 和 beta 值来在批量标准化中进行初始化。W 和 b 的初始化有一些技巧,但我找不到任何初始化 gamma 和 beta 值的技巧。我只想问是否有任何提示或技巧可以用来初始化 gamma 和 beta 并获得不错的准确性?

标签: python-3.xnumpydeep-learningneural-networkbatch-normalization

解决方案


PyTorch 使用 1 初始化 Gamma(比例),使用 0 初始化 Beta(移位),您可以在以下两个链接中找到:

第一个链接是 git 中的直接行

第二个链接直接指向 PyTorch 文档/源

更新我的答案,在这篇博客文章中完美地描述了理由,详细说明了批处理规范层的反向传播(而且非常直观)。直接报价是:

我们初始化 BatchNorm 参数以将输入转换为零均值/单位方差分布,但在训练期间他们可以了解到任何其他分布可能更好。

我的解释是:我们将 gamma 初始化为 1,将 beta 初始化为零,以便线性批范数变换的输出最初遵循标准的零均值单位方差正态分布(即 y = Gamma*X_norm + Beta = X_norm)。这提供了一个标准化的起点,模型可以为此更新 gamma 和 beta 以相应地缩放和移动每个输入的分布(对于当前层)。


推荐阅读