मैं कई दिनों के लिए इस समस्या से उलझन में था ...क्या fit_generator में "samples_per_epoch" और "steps_per_epoch" के बीच अंतर
मेरा प्रश्न है कि मैं batch_size सेट क्यों प्रशिक्षण समय है कि इस तरह के बड़े पैमाने पर के बीच अंतर है मेरे जनरेटर के लिए "1" और "20" होना।
अगर मैं होने के लिए , प्रशिक्षण समय 1 युग की लगभग 180 ~ 200 सेकंड है batch_size निर्धारित किया है। अगर मैं सेट batch_size , प्रशिक्षण समय 1 युग की होने के लिए लगभग 3000 ~ 3200 सेकंड है।
हालांकि, इन प्रशिक्षण समयों के बीच यह भयानक अंतर असामान्य लगता है ..., क्योंकि इसे उलट परिणाम होना चाहिए: batch_size = 1, प्रशिक्षण समय -> 3000 ~ 3200 सेकंड। बैच_साइज = 20, प्रशिक्षण समय -> 180 ~ 200 सेकंड।
मेरे जेनरेटर में इनपुट फ़ाइल पथ नहीं है, लेकिन numpy arrays जो पहले से ही मेमोरी में "np.load()" कॉल करके लोड हो चुके हैं। तो मुझे लगता है कि I/O व्यापार-बंद समस्या मौजूद नहीं है।
मैं Keras-2.0.3 का उपयोग कर रहा है और मेरे बैकएंड tensorflow-GPU 1.0.1
मैंने देखा है इस का अद्यतन विलय कर दिया PR, है लेकिन ऐसा लगता है कि इस बदलाव पर भी प्रभावित नहीं करेगा सब। (उपयोग मूल के साथ ही वही है)
link यहां मेरे स्वयं परिभाषित जनरेटर और मेरे fit_generator का हिस्सा है।
कोई मुझे इस समस्या की व्याख्या करने में मदद कर सकता है? आपको बहुत बहुत धन्यवाद :)
उत्तर देने के लिए धन्यवाद! मुझे लगता है कि मेरा मूल इसके साथ समान है (step_per_epochs # कुल नमूने/बैच_साइज के बराबर होना चाहिए)। लेकिन मर्ज किए गए पुल अनुरोध ने मुझे बहुत उलझन में डाल दिया ... ठीक है, मुझे अंत में मिल गया! आपका बहुत बहुत धन्यवाद! – HappyStorm
मैं fit_generator() दिनचर्या में कहीं भी निर्दिष्ट बैच_साइज नहीं देख रहा हूं। तो यह बैच_साइज कहां से कह रहा है? क्या वे बैच_साइज को परिभाषित कर रहे हैं (आपके जेनरेटर की लंबाई)/(step_per_epoch)? वे कहते हैं कि यह "आम तौर पर बराबर" है, लेकिन यह इंगित करेगा कि यह बिल्कुल बराबर है। –