जवाबों:
मैं एक पाया McLawrence द्वारा जवाब में एक और सवाल बहुत उपयोगी हो सकते हैं। नीचे प्रस्तुत:
वजन कम करने का तरीका
max_norm
क्या है?
maxnorm(m)
अगर, आपके भार के L2-Norm से अधिक हो जाते हैंm
, तो अपने पूरे वजन मैट्रिक्स को एक ऐसे कारक द्वारा मापें, जो मानदंड को कम करता हैm
। जैसा कि आप केरेस कोड में पा सकते हैंclass 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
मूलतः,
maxnorm
एकaxis
तर्क है, जिसके साथ मानदंड की गणना की जाती है। आपके उदाहरण में आप एक अक्ष निर्दिष्ट नहीं करते हैं, इस प्रकार पूरे वजन मैट्रिक्स पर मान की गणना की जाती है। यदि उदाहरण के लिए, आप हर आक्षेप फिल्टर के मान को कसना चाहते हैं, तो मान लें कि आपtf
आयाम क्रम का उपयोग कर रहे हैं , वजन मैट्रिक्स का आकार होगा(rows, cols, input_depth, output_depth)
। मानदंड की गणनाaxis = [0, 1, 2]
करने पर दिए गए मानदंड के लिए प्रत्येक फ़िल्टर बाध्य होगा।क्यों करना है?
वजन मैट्रिक्स को सीधा करना एक और तरह का नियमितीकरण है। यदि आप एक सरल L2 नियमितीकरण शब्द का उपयोग करते हैं, तो आप अपने नुकसान फ़ंक्शन के साथ उच्च भार को दंडित करते हैं। इस बाधा के साथ, आप सीधे नियमित करते हैं। जैसा कि
keras
कोड में भी जुड़ा हुआ है , यह एकdropout
परत के साथ संयोजन में विशेष रूप से अच्छी तरह से काम करता है । अधिक जानकारी इस पेपर में अध्याय 5.1 देखें
axis=0
।