Keras, काम सीखने की दर कैसे काम करता है?


23

यदि आप प्रलेखन http://keras.io/optimizers/ को देखते हैं तो क्षय के लिए SGD में एक पैरामीटर है। मुझे पता है कि यह समय के साथ सीखने की दर को कम करता है। हालांकि, मैं यह पता नहीं लगा सकता कि यह कैसे काम करता है। क्या यह एक मूल्य है जो सीखने की दर से गुणा किया जाता lr = lr * (1 - decay) है जैसे कि यह घातीय है? इसके अलावा मैं कैसे देख सकता हूं कि मेरा मॉडल किस सीखने की दर का उपयोग कर रहा है? जब मैं model.optimizer.lr.get_value()कुछ युगों तक एक फिट चलने के बाद प्रिंट करता हूं तो यह मूल शिक्षण दर को वापस देता है, भले ही मैंने क्षय को सेट किया हो।

इसके अलावा क्या मुझे नेस्टरोव सेट करना है = गति का उपयोग करने के लिए सही या केवल दो अलग-अलग प्रकार के संवेग हैं जिनका मैं उपयोग कर सकता हूं। उदाहरण के लिए ऐसा करने का एक बिंदु हैsgd = SGD(lr = 0.1, decay = 1e-6, momentum = 0.9, nesterov = False)

जवाबों:


24

आप जिस दस्तावेज़ का उल्लेख कर रहे हैं, उसमें पायथन स्रोत का संदर्भ शामिल है (बस [Source]उपयुक्त स्थान पर लिंक पर क्लिक करें ), जिसका उपयोग आपके सवालों के जवाब देने के लिए किया जा सकता है। यहां सबसे प्रासंगिक पंक्ति है, जिसमें दिखाया गया है कि decayसीखने की दर को कैसे संशोधित किया जाता है:

lr = self.lr * (1. / (1. + self.decay * self.iterations))

उपयोग करने के लिए nesterovविकल्प को True पर सेट करने की आवश्यकता नहीं है; इसका उपयोग एक अलग तरीके से किया जा रहा है, जैसा कि फिर से स्रोत से देखा जा सकता है:

v = self.momentum * m - lr * g  # velocity

if self.nesterov:
    new_p = p + self.momentum * v - lr * g
else:
    new_p = p + v

1
और self.iterationsअलग-अलग SGD चरणों की संख्या को संदर्भित करता है, युगों की संख्या नहीं, कठोरता?
गुइलिफ़िक्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.