python-3.x - 神经网络批量标准化中 Gamma 和 Beta 的初始化
问题描述
我正在自己制作一个神经网络。我现在被困在批量标准化过程中。问题是我无法找到任何好的 gamma 和 beta 值来在批量标准化中进行初始化。W 和 b 的初始化有一些技巧,但我找不到任何初始化 gamma 和 beta 值的技巧。我只想问是否有任何提示或技巧可以用来初始化 gamma 和 beta 并获得不错的准确性?
解决方案
PyTorch 使用 1 初始化 Gamma(比例),使用 0 初始化 Beta(移位),您可以在以下两个链接中找到:
更新我的答案,在这篇博客文章中完美地描述了理由,详细说明了批处理规范层的反向传播(而且非常直观)。直接报价是:
我们初始化 BatchNorm 参数以将输入转换为零均值/单位方差分布,但在训练期间他们可以了解到任何其他分布可能更好。
我的解释是:我们将 gamma 初始化为 1,将 beta 初始化为零,以便线性批范数变换的输出最初遵循标准的零均值单位方差正态分布(即 y = Gamma*X_norm + Beta = X_norm)。这提供了一个标准化的起点,模型可以为此更新 gamma 和 beta 以相应地缩放和移动每个输入的分布(对于当前层)。
推荐阅读
- python - Python 类与实例变量
- php - 访问作为另一个对象(嵌套对象)属性的对象的最佳方法是什么?
- firebase - Firebase 安全规则在 get() 或 exists() 操作 PERMISSION_DENIED 时始终为假
- android - 以预定义的顺序获取用户 ID(Firebase 和 Kotlin)
- python - 为什么使用 youtube-dl 的后续下载速度如此之快?
- swift - 有没有办法在 SwiftUI 中从详细视图导航到内部详细视图
- python - 如何找到列表中第二低和第二高的元素?
- performance - 循环中 if 条件的顺序会影响执行速度吗?
- reactjs - Hookrouter(react)改变url但不改变视图,只有在你自己刷新页面之后
- python - TypeError:对象 NoneType 不能用于“等待”表达式(机器人)