tensorflow —— Batch Normalization & Layer normalization & Group Normalization

Batch Normalization

  1. 一般用在激活函数之前,使结果x=Wx+b 各个维度mean为0,variance为1。通过规范化让激活函数分布在线性区间,让每一层的输入有一个稳定的分布会有利于网络的训练。
  2. 神经网络各层之间的传递称为特征图(feature map),特征图在传递的过程中,用BN进行调整。
mean, variance = tf.nn.moments(x, axes, name=None, keep_dims=False)  # 计算统计矩,mean 是一阶矩即均值,variance 则是二阶中心矩即方差,axes=[0]表示按列计算;

tf.nn.batch_normalization(x, mean, variance, offset, scale, variance_epsilon, name=None)

tf.nn.batch_norm_with_global_normalization(x, mean, variance, beta, gamma, variance_epsilon, scale_after_normalization, name=None)  # tf.nn.moments计算返回的 mean 和 variance 作为 tf.nn.batch_normalization 参数调用;

Layer Normalization

  1. BN特别依赖Batch Size。
  2. BN对处理序列化数据的网络比如RNN是不太适用的。
  3. BN只在训练的时候用,inference的时候不会用到,因为inference的输入不是批量输入。

LN的操作类似于将BN做了一个“转置”,对同一层网络的输出做一个标准化。注意,同一层的输出是单个图片的输出,比如对于一个batch为32的神经网络训练,会有32个均值和方差被得出,每个均值和方差都是由单个图片的所有channel之间做一个标准化。这么操作,就使得LN不受batch size的影响。

参考:
https://blog.csdn.net/liuxiao214/article/details/81037416
https://blog.csdn.net/leviopku/article/details/83109422
https://blog.csdn.net/zhangjunhit/article/details/53169308

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值