डेढ़ साल बाद, मैं अपने जवाब पर वापस आता हूं क्योंकि मेरा पिछला जवाब गलत था।
बैच आकार काफी सीखने को प्रभावित करता है। जब आप अपने नेटवर्क के माध्यम से एक बैच डालते हैं तो क्या होता है कि आप ग्रेडिएंट को औसत करते हैं। अवधारणा यह है कि यदि आपके बैच का आकार काफी बड़ा है, तो यह पूर्ण डेटासेट का ग्रेडिएंट क्या होगा, इसका एक पर्याप्त पर्याप्त अनुमान प्रदान करेगा। अपने डेटासेट से नमूने लेकर, आप कम्प्यूटेशनल लागत को कम करते हुए ग्रेडिएंट का अनुमान लगाते हैं। जितना कम आप जाएंगे, आपका एस्टीमेट उतना ही सटीक होगा, लेकिन कुछ मामलों में ये शोर प्रवणता वास्तव में स्थानीय मिनीमा को भागने में मदद कर सकते हैं। जब यह बहुत कम हो जाता है, तो आपका नेटवर्क वेट बस के आसपास कूद सकता है यदि आपका डेटा शोर है और यह सीखने में असमर्थ हो सकता है या यह बहुत धीरे-धीरे परिवर्तित होता है, इस प्रकार कुल गणना समय को नकारात्मक रूप से प्रभावित करता है।
बैचिंग का एक और लाभ जीपीयू कम्प्यूटेशन के लिए है, जीपीयू तंत्रिका नेटवर्क में होने वाली गणनाओं को समानांतर करने के लिए बहुत अच्छा है यदि गणना का हिस्सा समान है (उदाहरण के लिए, आपके नेटवर्क के समान वजन मैट्रिक्स पर दोहराया मैट्रिक्स गुणा)। इसका मतलब यह है कि 16 का एक बैच आकार 8 के बैच आकार की तुलना में दोगुना से कम ले जाएगा।
उस स्थिति में जब आपको बड़े बैच आकारों की आवश्यकता होती है, लेकिन यह आपके GPU पर फिट नहीं होगा, आप एक छोटे बैच को खिला सकते हैं, ग्रेडिएंट अनुमानों को बचा सकते हैं और एक या अधिक बैचों को फीड कर सकते हैं, और फिर एक वेट अपडेट कर सकते हैं। इस तरह से आपको अधिक स्थिर ढाल मिलती है क्योंकि आपने अपने वर्चुअल बैच का आकार बढ़ा दिया है।
गलत, पुराने जवाब: [[नहीं, बैच_साइज औसतन आपके सीखने की गति को प्रभावित करता है, न कि सीखने की गुणवत्ता को। बैच_साइज को भी 2 की शक्तियां होने की आवश्यकता नहीं है, हालांकि मैं समझता हूं कि कुछ निश्चित पैकेज केवल 2 की शक्तियों की अनुमति देते हैं। आपको अपने बैच को अधिकतम करने की कोशिश करनी चाहिए। आप वह कर सकते हैं जो अभी भी अधिकतम गति प्राप्त करने के लिए आपके GPU की मेमोरी को फिट करता है। ।]]]]