• Batch Normalization和Layer Normalization的区别


    网上有不少解释,包括下面这张图片
    图片出处:https://mlexplained.com/2018/11/30/an-overview-of-normalization-methods-in-deep-learning/
    光靠图片理解还是不够,而且特别容易理解反了。这里用一个实例进行讲解。
    一个非常简单的数据集,包含两个sample,3个features。
    第一个sample: X1=1.0,X2=1.0, X3=1.0
    第二个sample: X1=10.0,X2=10.0, X3=10.0

    data = tf.constant([1.0,1.0,1.0],[10.0,10.0,10.0])
    

    Layer Normalization

    tf.keras.layers.LayerNormalization()(data)
    

    给出的结果是

    <tf.Tensor: id=260, shape=(2, 3), dtype=float32, numpy=
    array([[0., 0., 0.],
           [0., 0., 0.]], dtype=float32)>
    

    Batch Normalization

    tf.keras.layers.BatchNormalization()(data)
    

    给出的结果是

    <tf.Tensor: id=311, shape=(2, 3), dtype=float32, numpy=
    array([[0.9995004, 0.9995004, 0.9995004],
           [9.995004 , 9.995004 , 9.995004 ]], dtype=float32)>
    

    总结

    由于数据集中每个sample中的3个feature的取值都一样,所以Layer Normalization之后值全部变成0。也就是说

    • Batch Normalization是将feature X在所有batch sample中normalization,所有batch sample中的featture X根据得到的平均值和方差进行normalization;
    • Layer Normalization是将每个batch sample中的三个feature X1 X2 X3进行normalization,每个batch sample中的三个feature根据得到的平均值和方差进行normalization。由于Layer Normalization是每个sample独立进行的,所以统计参数(平均值和方差)对于每个sample来说是互相独立的。

    参考文献

    1. https://mlexplained.com/2018/11/30/an-overview-of-normalization-methods-in-deep-learning/
    2. https://mlexplained.com/2018/01/13/weight-normalization-and-layer-normalization-explained-normalization-in-deep-learning-part-2/
  • 相关阅读:
    Java开源内容管理CMS系统J4CMS支持静态化直接ftp上传到你的空间了
    JAVA数组的定义及用法
    从本地上传整个目录到hdfs的java程序
    图片轮显效果大全
    Windows 自己主动关机命令 shuntdown
    Android源码是这样搞到的(图解)
    JSONObject与JSONArray的使用
    教你用笔记本破解无线路由器password
    tomcat配置文件server.xml具体解释
    SQLite的SQL语法
  • 原文地址:https://www.cnblogs.com/yaos/p/14014149.html
Copyright © 2020-2023  润新知