Normalizasyon
BatchNorm, LayerNorm, GroupNorm ve InstanceNorm.
01Ortak dönüşüm#
Seçilen eksenlerde ortalama ve varyans hesaplanır. epsilon sayısal kararlılık, gamma öğrenilebilir ölçek, beta kaymadır. Gruplama eksenleri her türün istatistiksel anlamını belirler.
02BatchNorm1D / BatchNorm2D#
BatchNorm(num_features,eps=1e-5,momentum=0.1,affine=true). 1D/2D aynı tabanı kullanır, kanal ekseni 1’dir. Eğitimde batch ve uzamsal eksenler indirgenir. Normalizasyonda /m varyansı, running_var için m>1 olduğunda /(m−1) düzeltmesi vardır. Eval running_mean/running_var kullanır; bu buffer’lar state_dict içinde saklanır.
03LayerNorm#
LayerNorm(normalized_size,eps=1e-5) yalnız son ekseni normalize eder; o eksen normalized_size olmalı. Batch bağımsızdır, running istatistiği yoktur. weight=1, bias=0 başlar; affine kapatma seçeneği yoktur.
LayerNorm norm(64);auto y=norm.forward(Tensor::zeros({4,32,64}));04GroupNorm / InstanceNorm#
GroupNorm(num_groups,num_channels,eps=1e-5,affine=true) her örneğin kanallarını eşit gruplara ayırır. Kanal sayısı gruplara bölünür. InstanceNorm(num_channels,eps=1e-5,affine=true) groups=C olan GroupNorm’dur. Running istatistiği tutmazlar.
05Normalizasyon türevi#
Bir grup için u=dy⊙gamma olsun. dgamma=Σ(dy⊙x̂), dbeta=Σdy uygun eksenlerde birikir. Eval BatchNorm’da istatistikler sabit olduğu için eğitim türevi yerine doğrudan ölçek uygulanır.