【深度学习】Group Normalization阅读笔记

Batch Normalization阅读笔记
Batch normalization vs Instance normalization

目前归一化的主要方法:Batch Normalization(2015年)、Layer Normalization(2016年)、Instance Normalization(2017年)、Group Normalization(2018年)

归一化方法通用公式:
x ^ i = 1 σ i ( x i − μ i ) \hat{x}_{i}=\frac{1}{\sigma_{i}}\left(x_{i}-\mu_{i}\right) x^i=σi1(xiμi)

x i x_{i} xi是某一层的特征, i i i是索引, i = ( i N , i C , i H , i W ) i=\left(i_{N}, i_{C}, i_{H}, i_{W}\right) i=(iN,iC,iH,iW)对应于特征图的 ( N , C , H , W ) (N, C, H, W) (N,C,H,W)
μ i = 1 m ∑ k ∈ S i x k , σ i = 1 m ∑ k ∈ S i ( x k − μ i ) 2 + ϵ \mu_{i}=\frac{1}{m} \sum_{k \in \mathcal{S}_{i}} x_{k}, \quad \sigma_{i}=\sqrt{\frac{1}{m} \sum_{k \in \mathcal{S}_{i}}\left(x_{k}-\mu_{i}\right)^{2}+\epsilon} μi=m1kSixk,σi=m1kSi(xkμi)2+ϵ

y i = γ x ^ i + β y_{i}=\gamma \hat{x}_{i}+\beta yi=γx^i+β

Si is the set of pixels in which the mean and std are computed, and m
is the size of this set

应用场景

在这里插入图片描述
从左到右依次为BN、LN、IN、GN

1、BN(Batch Normalization):在batch上,对NHW做归一化

S i = { k ∣ k C = i C } \mathcal{S}_{i}=\left\{k | k_{C}=i_{C}\right\} Si={kkC=iC}

BN适用于图像分类识别任务

2、LN(Layer Normalization):在channel上,对CHW做归一化
S i = { k ∣ k N = i N } \mathcal{S}_{i}=\left\{k | k_{N}=i_{N}\right\} Si={kkN=iN}
LN适用于序列模型(RNN、LSTM)

3、IN(Instance Normalization): 在像素上,对HW做归一化
S i = { k ∣ k N = i N , k C = i C } \mathcal{S}_{i}=\left\{k | k_{N}=i_{N}, k_{C}=i_{C}\right\} Si={kkN=iN,kC=iC}
IN适用于生成模型(风格迁移、图像超分辨率等)

4、GN(Group Normalization): 先将chanel分组,然后再分组在chanel上做归一化
S i = { k ∣ k N = i N , ⌊ k C C / G ⌋ = ⌊ i C C / G ⌋ } \mathcal{S}_{i}=\left\{k | k_{N}=i_{N},\left\lfloor\frac{k_{C}}{C / G}\right\rfloor=\left\lfloor\frac{i_{C}}{C / G}\right\rfloor\right\} Si={kkN=iN,C/GkC=C/GiC}

GN是极端情况下可等价于LN和IN

GN的tensorflow实现,其他类似,只需在计算 mean和variable更改指定维度即可

import tensorflow as tf

def GroupNorm(x, gamma, beta, G, eps=1e-5):
    N, C, H, W = x.shape
    x = tf.reshape(x, [N, G, C // G, H, W])
    mean, variable = tf.nn.moments(x, [2, 3, 4], keep_dims=True)
    x = (x - mean) / tf.sqrt(variable + eps)
    x = tf.reshape(x, [N, C, H, W])
    return x * gamma + beta

BN vs GN

GN优于BN的地方:

BN依赖于batch_size
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值