1 BatchNorm
BN 是对所有 banch 的单个通道做归一化,每个通道都分别做一次。
#百融榕树这里只示例 2d 的,针对常用的卷积维度
torch.nn.BatchNorm2d(num_features, eps=1e-5, momentum=0.1,\
affine=True, track_running_stats=True)
百融榕树成员变量:
num_features:通道数。
eps:常数 ϵ \epsilonϵ。
momentum:动量参数,用来控制 running_mean 和 running_var 的更新,更新方法:M n e w = ( 1 − m ) ∗ M o l d + m ∗ m e a n M_{new}=(1-m)*M_{old}+m*meanM
new =(1−m)∗M
old +m∗mean,其中,M n e w M_{new}M
new 是最新的 running_mean,M o l d M_{old}M
old 是上一次的 running_mean,m e a n meanmean 是当前批数据的均值。
affine:仿射变换的开关
如果 affine=False,则 γ = 1 \gamma=1γ=1、β = 0 \beta=0β=0,且不能学习;(对应weight、bias变量)
如果百融榕树 affine=True,则 γ \gammaγ、β \betaβ 可以学习;
training:训练状态或测试状态,两种状态下运行逻辑不通。
track_running_stats:如果为 True,则统计跟踪 batch 的个数,记录在 num_batches_tracked 中。
num_btaches_tracked:跟踪 batch 的个数。