博客
关于我
batch norm参数
阅读量:272 次
发布时间:2019-03-01

本文共 941 字,大约阅读时间需要 3 分钟。

在阅读深度学习模型的源码时,常常会遇到一些与批量归一化(Batch Normalization,BN)相关的新参数。这些参数在不同模型中可能会有细微差别,但总体上具有相似的功能。以下是几个值得关注的参数:

  • epsilon:

    为了防止归一化过程中分母出现零的情况(这通常会导致计算结果异常),epsilon作为一个非常小的数值被引入。它的作用是确保分母始终保持一定的值,从而避免除以零的错误。在批量归一化的算法中,epsilon通常会被设置为一个很小的数值,如1e-5。

  • momentum:

    批量归一化需要计算加权移动平均数(Moving Average,MA),而momentum参数则是这个加权平均数的权重。在代码实现中,momentum通常被设置为一个接近1的数值(如0.9、0.99或0.999)。它的作用是赋予加权平均数一定的“惯性”,即历史平均值不会被完全替代。

  • use_precise_stats:

    在批量归一化的训练过程中,模型会根据当前批次的数据计算均值和方差来进行归一化。但是在测试过程中,由于没有批量数据,模型需要使用预先计算好的滑动平均值(EMA)。这个滑动平均值的计算方式决定了模型的性能。当训练过程中计算的EMA不能很好地估计测试时的均值和方差时,批量归一化可能会失效。因此,use_precise_stats参数被引入,其作用是控制EMA的计算方式。如果lambda值(通常在0.9到0.99之间)过小,最近的批次数据对EMA的影响会过大,导致估计值不准确;如果lambda值过大,则需要更多的迭代才能得到稳定的结果。

  • num_batches_precise:

    在使用precise batch norm(精确批归一化)时,模型会根据指定的批量数量(num_batches_precise)来计算测试时的均值和方差。这批量数量也是一个超参数,其选择对模型性能有重要影响。

  • 需要注意的是,虽然use_precise_stats和num_batches_precise都是精确批归一化的核心参数,但这种方法并不是主流的选择。因为EMA通常是有效的(当lambda值足够大且模型经过充分训练时),因此大多数情况下直接使用EMA来估计测试时的均值和方差是足够的。

    转载地址:http://mrvx.baihongyu.com/

    你可能感兴趣的文章
    python | 提升代码迭代速度的Python重载方法
    查看>>
    python | 深入理解Python并发编程中的GIL限制与解决方案
    查看>>
    Python | 爬虫实战——亚马逊搜索页监控(附详细源码)
    查看>>
    python | 高效使用Python工具自动生成模块文档的秘诀
    查看>>
    python 一个list去除另一个list中的值
    查看>>
    python 三大框架的 介绍。
    查看>>
    Python 下载的 11 种姿势,一种比一种高级!
    查看>>
    python读取一个文件夹下所有图片_初学Python-找出文件夹下的所有图片
    查看>>
    Python 中 3 个不可思议的返回功能
    查看>>
    python 中 dict 的另一种用法
    查看>>
    Python 中 PIL 读取图片出现异常旋转的解决方法
    查看>>
    Python 中只有一个 True 和一个 False 对象吗?
    查看>>
    python读取mtcars数据集并实现以下操作_关于数据处理。。,Python交流,技术交流区,鱼C论坛 - Powered by Discuz!...
    查看>>
    Python 中多线程与多处理之间的区别
    查看>>
    Python 中如何使用 lambda 函数
    查看>>
    Python 中如何创建多行字符串?
    查看>>
    Python 中如何处理异常?
    查看>>
    Python 中如何实现列表的切片?
    查看>>
    Python 中如何实现字典的排序?
    查看>>
    Python 中常用的数据类型及相关操作详解
    查看>>