11

मैं एक बहुत बड़े मॉडल को प्रशिक्षित करने की कोशिश कर रहा हूं। इसलिए, मैं केवल GPU स्मृति में एक बहुत छोटे बैच आकार फिट कर सकता हूं। छोटे बैच आकार के साथ काम करना बहुत noisy gradient estimations के साथ काम करता है।
इस समस्या से बचने के लिए मैं क्या कर सकता हूं?कैफे: अगर मैं केवल एक छोटा बैच स्मृति में फिट बैठता हूं तो मैं क्या कर सकता हूं?

+2

संबंधित: http://stats.stackexchange.com/q/201775/66467 – Shai

उत्तर

9

आप सॉल्वर पैरामीटर में iter_size बदल सकते हैं। कैफे प्रत्येक स्टोकास्टिक ढाल वंश चरण में iter_size x batch_size उदाहरणों पर ग्रेडियेंट जमा करता है। इसलिए iter_size बढ़ाना अधिक स्थिर ढाल भी प्राप्त कर सकता है जब आप सीमित स्मृति के कारण बड़े बैच_साइज का उपयोग नहीं कर सकते हैं।

4

जैसा कि this post में बताया गया है, बैच आकार सिद्धांत में कोई समस्या नहीं है (स्टोकास्टिक ग्रेडियेंट वंश की दक्षता आकार 1 के बैच के साथ साबित हुई है)। सुनिश्चित करें कि आप अपने बैच को सही तरीके से कार्यान्वित करें (नमूनों को आपके डेटा पर यादृच्छिक रूप से चुना जाना चाहिए)।

+2

वास्तव में यह एक अच्छा सैद्धांतिक परिणाम है, लेकिन व्यावहारिक रूप से, खासकर जब नेट बड़ा होता है और इसमें कई पैरामीटर शामिल होते हैं, तो कोई भी बड़े बैच का उपयोग करना पसंद कर सकता है आकार। – Shai

+0

क्या आप अपने कार्यान्वयन के बारे में कुछ और जानकारी दे सकते हैं? पैरामीटर की संख्या? अधिकतम बैच आकार जिसका आप उपयोग कर सकते हैं? –

+0

मैं एक पुनरावर्ती मॉडल सीखने की कोशिश कर रहा हूं: इसलिए, बैच का आकार उस समय के चरणों के बीच एक व्यापार बंद है जिसे मैं अनलोल कर सकता हूं और स्वतंत्र अनुक्रमों की संख्या मैं संसाधित कर सकता हूं। जितना अधिक समय मैं शामिल करता हूं, कम अनुक्रम मैं संसाधित कर सकता हूं और इस प्रकार ढाल अनुमान में शोर बढ़ता है। – Shai

संबंधित मुद्दे

 संबंधित मुद्दे