Advertisement

In tensorflow实现batch normalization

阅读量:

tensorflow版本1.4

目前在TensorFlow中,尚未提供一个完全封装好的Batch Normalization实现方式,因此在此尝试进行相关实现。
有关理论内容可参考《 解读Batch Normalization》

针对TensorFlow平台下的BN实现,首先需要关注以下几个关键点:

  • (1)该实现需能够自动适配卷积层(batch_sizeheightwidthchannel)与全连接层(batch_sizechannel)的结构差异;
  • (2)应具备区分训练阶段与测试阶段的能力,在训练过程中需对均值与方差进行更新,而在测试阶段则应使用滑动平均计算所得的均值和方差,因此需要引入is_training这一参数标志;
  • (3)建议允许用户对滑动平均系数进行自定义设置;
  • (4)由于BN运算量较大,在设计时应尽可能优化存储空间与计算效率;
  • (5)需确保alpha和beta参数能够通过反向传播算法进行更新,而均值和方差则由计算得出;
  • (6)在加载模型时,必须保证历史均值、方差以及alpha和beta参数能够被正确读取;

最终完成的代码实现如下:

复制代码
    #coding=utf-8
    # util.py 用于实现一些功能函数
    
    import tensorflow as 

全部评论 (0)

还没有任何评论哟~