machine-learning - नवज - माँ का पहला दूध




कैरस के मॉडल चेकपॉइंट का उपयोग करके प्रशिक्षण मॉडल को कैसे जारी रखना चाहिए (2)

Im Keras का एक नया उपयोगकर्ता Keras का उपयोग कर प्रशिक्षण प्रक्रिया के बारे में मेरे पास एक सवाल है

मेरे सर्वर की समय सीमा (प्रत्येक कार्य केवल 24 घंटों से कम में ही चल सकता है) के कारण, मुझे अपने 10-युग काल की अवधि का उपयोग करके अपने मॉडल को प्रशिक्षित करना होगा

प्रशिक्षण के पहले चरण में, 10 युगों के बाद, सर्वश्रेष्ठ मॉडल का वजन कैरस के मॉडल चेकपॉइंट के जरिये जमा हो जाता है।

conf = dict()
conf['nb_epoch'] = 10
callbacks = [
             ModelCheckpoint(filepath='/1st_{epoch:d}_{val_loss:.5f}.hdf5',
             monitor='val_loss', save_best_only=True,
             save_weights_only=False, verbose=0)
            ]   

मान लें कि मुझे सबसे अच्छा मॉडल मिलेगा: '1st_10_1.00000.hdf5' इसके बाद, मैं अपने मॉडल को 10 युगों का उपयोग करके प्रशिक्षण देना जारी रखता हूं और सबसे अच्छा मॉडल के वजन को निम्नानुसार रखता हूं।

model.load_weights('1st_10_1.00000.hdf5')
model.compile(...)
callbacks = [
             ModelCheckpoint(filepath='/2nd_{epoch:d}_{val_loss:.5f}.hdf5',
             monitor='val_loss', save_best_only=True,
             save_weights_only=False, verbose=0)
            ]

लेकिन मुझे दिक्कत है। दूसरा प्रशिक्षण का पहला युग 1.20000 का val_loss देता है, और स्क्रिप्ट एक मॉडल '2/2_1_1.20000 एचडीएफ 5' का उत्पादन करती है। जाहिर है, नए val_loss पहले प्रशिक्षण (1.00000) के सर्वश्रेष्ठ val_loss से अधिक है और दूसरे प्रशिक्षण के निम्नलिखित युगों को '2nd_1_1.20000 एचडीएफ 5' मॉडल के आधार पर प्रशिक्षित किया जाता है, न कि '1st_10_1.00000.hdf5'।

'2nd_1_1.20000.hdf5'
'2nd_1_2.15000.hdf5'
'2nd_1_3.10000.hdf5'
'2nd_1_4.05000.hdf5'
...

मुझे लगता है कि यह पहली बर्बादी के पहले परिणाम के बेहतर परिणाम का उपयोग नहीं कर रहा है। कोई मुझे इसे ठीक करने का तरीका बता सकता है, या प्रोग्राम को बताए जाने का तरीका बताता है कि उसे पिछली प्रशिक्षण अवधि का सबसे अच्छा मॉडल इस्तेमाल करना चाहिए? अग्रिम में बहुत धन्यवाद!


दिलचस्प मामला, एक महान सुधार हो सकता है ... मुझे नहीं लगता कि एपीआई वर्तमान में इस तरह के समाधान का समर्थन करता है, अपने कॉलबैक फ़ंक्शन को बनाने के अलावा।

मुझे नहीं लगता कि यह मुश्किल होगा आप मूल modelcheckpoint कॉलबैक क्लास का आधार बना सकते हैं और बस बदल सकते हैं।

यह रेखा: https://github.com/fchollet/keras/blob/master/keras/callbacks.py#L390

यह आइटम के मौजूदा सर्वश्रेष्ठ मूल्य को लॉजेट करता है, यह स्थिति पर निर्भर करते हुए या तो -inf / inf के रूप में एक if स्टेटमेंट में प्रारंभ किया जा रहा है।

आपके मामले में आपको फ़ाइल का फ़ाइल नाम पढ़ने का कोई तरीका ढूंढना होगा, कुछ स्ट्रिंग हेरफेर करें, और उसके बदले में जोड़ें

मैं इसे एक अलग बयान के रूप में जोड़ने का सुझाव देता हूं .. या else if

कोर कोड के साथ बहुत ज्यादा गड़बड़ करने से बचने के लिए

आशा है कि यह मदद करता है ..


मैं समान समस्या में गया, और जब तक मैंने सवाल भी नहीं पूछा था तब तक आपका सवाल नहीं देखा। मुझे मिली प्रतिक्रिया के आधार पर, मैंने एक सरल कॉलबैक लिखा था जो श्रेष्ठ प्रशिक्षण मूल्यों को सहेजता है और पुनर्स्थापित करता है (जैसे val_loss)। आप इसे यहां पा सकते हैं: Keras में प्रशिक्षण सत्रों पर मेट्रिक मानों को कैसे संरक्षित किया जाता है?





checkpoint