博客
关于我
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 多进程-进阶-进程间通信之Pipe
    查看>>
    python 多进程-进阶-进程间通信之Queue
    查看>>
    python 如何“否定“value : 如果为真则返回假,如果为假则返回真
    查看>>
    Python 如何在 Web 环境中使用 Matplotlib 进行数据可视化
    查看>>
    python 字符串中特定字符替换,截取
    查看>>
    Python 字符串总结
    查看>>
    python 字符串显示中文_Python字符串开头的b"、u"、r"与中文乱码
    查看>>
    Python 字符串的几种拼装方式
    查看>>
    python 存入数据库bigint_python基础_MySQL的bigint类型
    查看>>
    python 学习 面向对象编程
    查看>>
    Python 学习日记第三篇 -- 字典
    查看>>
    Python 学习笔记(一)Data type
    查看>>
    python 安装echarts
    查看>>
    python 安装opencv及问题解决
    查看>>
    Python 安装程序:“写入文件 C:\Python27\pythonw.exe 时出错“
    查看>>
    Python 安装避坑指南:从入门到进阶
    查看>>
    Python 安装配置详解
    查看>>
    python 实现儿童算术游戏
    查看>>