Batch normalization及其在tensorflow中的实现

Batch normalization(BN)

BN是对输入的特征图进行标准化的操作,其公式为:

x^=γ(xμ)/σ2+ϵ+β

  • x - 原输入
  • x^ - 标准化后的输入
  • μ - 一个batch中的均值
  • σ2 - 一个batch中的方差
  • ϵ - 一个很小的数,防止除0
  • β - 中心偏移量(center)
  • γ - 缩放(scale)系数

tensorflow中提供了三种BN方法:

  • tf.nn.batch_normalization
  • tf.layers.batch_normalization
  • tf.contrib.layers.batch_norm

tf.layers.batch_normalization为例介绍里面所包含的主要参数:

tf.layers.batch_normalization(inputs, decay=0.999, center=True, scale=True, is_training=True, epsilon=0.001)

一般使用只要定义以下的参数即可:

  • inputs: 输入张量[N, H, W, C]

  • decay: 滑动平均的衰减系数,一般取接近1的值,这样能在验证和测试集上获得较好结果

  • center: 中心偏移量,上述的 β ,为True,则自动添加,否则忽略

  • scale: 缩放系数,上述的 γ ,为True,则自动添加,否则忽略

  • epsilon: 为防止除0而加的一个很小的数

  • is_training: 是否是训练过程,为True则代表是训练过程,那么将根据decay用指数滑动平均求得moments,并累加保存到moving_meanmoving_variance中。否则是测试过程,函数直接取这两个参数来用。

    如果是True,则需在训练的session中添加将BN参数更新操作加入训练的代码:

    
    # execute update_ops to update batch_norm weights
    
    update_ops = tf.get_collection(tf.GraphKeys.UPDATE_OPS)
    with tf.control_dependencies(update_ops):
     optimizer = tf.train.AdamOptimizer(decayed_learning_rate)
     train_op = optimizer.minimize(loss, global_step = global_step)

Note

需要看上述函数的详细参数,可在python终端通过以下命令获取:

import tensorflow as tf
help(tf.layers.batch_normalization) # help中添加函数名
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值