Yanıtlar:
Bir buldum McLawrence tarafından cevap içinde başka bir soru çok yardımcı olmaktır. Aşağıda çoğaltıldı:
Kilo kısıtı ne yapar
max_norm
?
maxnorm(m)
ağırlıklarınızın L2-Normu aşılırsam
, tüm ağırlık matrisinizi normu azaltan bir faktörle ölçeklendirirm
. Keras kodunda bulabileceğiniz gibiclass MaxNorm(Constraint)
:def __call__(self, w): norms = K.sqrt(K.sum(K.square(w), axis=self.axis, keepdims=True)) desired = K.clip(norms, 0, self.max_value) w *= (desired / (K.epsilon() + norms)) return w
Ek olarak, normun hesaplandığı
maxnorm
biraxis
argüman vardır . Örneğinizde bir eksen belirtmezsiniz, bu nedenle norm tüm ağırlık matrisi üzerinde hesaplanır. Örneğin,tf
boyut düzenini kullandığınızı varsayarsak, her evrişimsel filtrenin normunu sınırlamak istiyorsanız , ağırlık matrisi şekle sahip olacaktır(rows, cols, input_depth, output_depth)
. Normun hesaplanmasıaxis = [0, 1, 2]
her filtreyi verilen norm ile sınırlar.Neden yapmalı?
Ağırlık matrisini doğrudan sınırlamak başka bir tür düzenlemedir. Basit bir L2 düzenleme terimi kullanırsanız, kayıp fonksiyonunuzla yüksek ağırlıkları cezalandırırsınız. Bu kısıtlama ile doğrudan düzenli hale gelirsiniz. Kodda da bağlandığı
keras
gibi, bu özellikle birdropout
katmanla birlikte iyi çalışıyor gibi görünüyor . Daha fazla bilgi için bu yazıda bölüm 5.1'e bakınız.
axis=0
.