tf中的batchnorm

tf中的batchnorm

1. 使用batchnorm目的

  • 在使用sigmoid函数时,在函数两端的梯度几乎为0,位于这部分区间的数据参数更新很慢。利用
    normalization可以把之前数据的分布平移缩放到0附近,这样有利于数据参数更新
  • image Normalization(图片数据规整化)
def normalize(x, mean, std):
    x = x - mean
    x = x / std
    return x

2. 常见Normalization([N, C, H*W])

  • Batch Norm:在C(通道维)计算均值和方差用于Normalization
  • Layer Norm:在N(实例维)计算均值和方差用于Normalization
  • Instance Norm:在N上的每个C上计算均值和方差用于Normalization

3. Batch normalization

  • 通过计算出的均值和方差将数据规整化 z ˇ i = z i − μ σ \check z^i = \frac{z^i -\mu}{\sigma} zˇi=σziμ
  • 通过学习而得的参数(学习而得的均值和方差)将数据规整化,使其服从N( β \beta β , γ , \gamma ,γ)分布 z ^ i = γ ⨀ z ˇ i + β \hat z^i = \gamma \bigodot \check z^i+\beta z^i=γzˇi+β

4. TensorFlow中Batch normalization实现

  • 使用函数net = layers.BatchNormalization()实现,其中默认的四个参数分别如下所示
    axis=-1 表示在哪个轴上做normalization
    center=True 表示是否使用 β \beta β参数
    scale=True 表示是否使用 γ \gamma γ参数
    trainable=True 表示 β \beta β, γ \gamma γ参数是否需要反向传播

5. 使用Batch normalization好处

  • 收敛速度更快
  • 得到更好的结果
  • 模型更稳定(减少因学习率导致梯度导致参数不更新的可能),可以使用更大的学习率
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值