बैच_साइज़, स्टेप्स_पर युग और सत्यापन चरण कैसे सेट करें


26

मैं केरस का उपयोग करके सीएनएन सीखना शुरू कर रहा हूं। मैं थीनो बैकएंड का उपयोग कर रहा हूं।

मुझे समझ में नहीं आता कि कैसे मान सेट करें:

  • बैच का आकार,
  • चरण प्रति युग,
  • validation_steps।

batch_sizeयदि मेरे पास प्रशिक्षण सेट में 240,000 नमूने हैं और परीक्षण सेट में 80,000 हैं, तो मूल्य प्रति सेट , प्रति युग और सत्यापन चरण क्या होना चाहिए ?


आपके हार्डवेयर विनिर्देश क्या हैं? यह इस बात पर निर्भर करता है कि आम तौर पर लोग 32/64 के बैच आकार का उपयोग करते हैं, 10 ~ 15 के रूप में युगों और फिर ऊपर से आप प्रति युग के चरणों की गणना कर सकते हैं ..
आदित्य

जवाबों:


28
  • बैच_साइज़ प्रत्येक मिनी बैच में नमूनों की संख्या निर्धारित करता है। इसकी अधिकतम सभी नमूनों की संख्या है, जो ढाल को सटीक बनाता है, नुकसान कम से कम हो जाएगा यदि सीखने की दर काफी छोटी है, लेकिन पुनरावृत्तियां धीमी हैं। इसका न्यूनतम 1 है, जिसके परिणामस्वरूप स्टोकेस्टिक ग्रेडिएंट डिसेंट है: फास्ट लेकिन ग्रेडिएंट स्टेप की दिशा केवल एक उदाहरण पर आधारित है, नुकसान चारों ओर कूद सकता है। बैच_साइज दो चरम सीमाओं के बीच समायोजित करने की अनुमति देता है: सटीक ढाल दिशा और तेज पुनरावृत्ति। यदि आपका मॉडल + डेटा सेट उपलब्ध (GPU) मेमोरी में फिट नहीं होता है, तो भी बैच_साइज के लिए अधिकतम मूल्य सीमित हो सकता है।
  • steps_per_epoch एक प्रशिक्षण युग समाप्त होने से पहले बैच पुनरावृत्तियों की संख्या समाप्त हो जाती है। यदि आपके पास निश्चित आकार का एक प्रशिक्षण सेट है, तो आप इसे अनदेखा कर सकते हैं, लेकिन यह उपयोगी हो सकता है यदि आपके पास एक विशाल डेटा सेट है या यदि आप मक्खी पर यादृच्छिक डेटा वृद्धि उत्पन्न कर रहे हैं, अर्थात यदि आपके प्रशिक्षण सेट में एक (उत्पन्न) अनंत आकार है। यदि आपके पास अपने पूरे प्रशिक्षण डेटा सेट के माध्यम से जाने का समय है तो मैं इस पैरामीटर को छोड़ने की सलाह देता हूं।
  • validation_steps, step_per_epoch के समान, लेकिन प्रशिक्षण डेटा के बजाय सत्यापन डेटा सेट पर। यदि आपके पास अपने संपूर्ण सत्यापन डेटा सेट के माध्यम से जाने का समय है, तो मैं इस पैरामीटर को छोड़ने की सलाह देता हूं।

"इस पैरामीटर को छोड़ देने" से आपका क्या मतलब है? जब मैं प्राप्त पैरामीटर निकालता हूं When using data tensors as input to a model, you should specify the steps_per_epoch argument
निकोलस राउल

प्रलेखन के अनुसार, विधि फिट के पैरामीटर steps_per_epoch में एक डिफ़ॉल्ट है और इस प्रकार वैकल्पिक होना चाहिए: "डिफ़ॉल्ट कोई भी बैच आकार द्वारा विभाजित आपके डेटासेट में नमूनों की संख्या के बराबर नहीं है, या 1 यदि यह निर्धारित नहीं किया जा सकता है।" स्रोत: keras.io/models/model
सिलपियन सेप

1

गितुब में जवाब है

  1. model.fit_generator अनंत रूप से चलाने के लिए इनपुट डेटासेट जनरेटर की आवश्यकता होती है।
  2. steps_per_epochजनरेटर steps_per_epochसमय पर कॉल करके एक बार संपूर्ण डेटासेट उत्पन्न करने के लिए उपयोग किया जाता है
  3. जबकि epochsबार मॉडल पूरे डाटासेट से अधिक प्रशिक्षित किया जाता है की संख्या दे।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.