केरेस के फिट फंक्शन का वैलिडेशन_सप्लिट पैरामीटर कैसे काम करता है?


17

केरस अनुक्रमिक मॉडल फिट फ़ंक्शन में मान्यता-विभाजन https://keras.io/models/fter// पर निम्न के रूप में प्रलेखित है :

validation_split: 0 और 1. के बीच फ़्लोट सत्यापन डेटा का उपयोग सत्यापन डेटा के रूप में किया जाएगा। मॉडल प्रशिक्षण डेटा के इस अंश को अलग करेगा, उस पर प्रशिक्षण नहीं देगा, और प्रत्येक युग के अंत में इस डेटा पर नुकसान और किसी भी मॉडल मैट्रिक्स का मूल्यांकन करेगा। सत्यापन डेटा को फेरबदल से पहले प्रदान किए गए x और y डेटा में अंतिम नमूनों से चुना गया है।

कृपया अंतिम पंक्ति नोट करें:

सत्यापन डेटा को फेरबदल से पहले प्रदान किए गए x और y डेटा में अंतिम नमूनों से चुना गया है।

क्या इसका मतलब है कि सत्यापन डेटा हमेशा तय किया जाता है और मुख्य डेटासेट के नीचे से लिया जाता है?

क्या कोई तरीका है जिससे इसे मुख्य डेटासेट से डेटा के बेतरतीब ढंग से दिए गए अंश का चयन किया जा सकता है?

जवाबों:


17

आप वास्तव में प्रत्येक युग के बाद अपने सत्यापन सेट को फिर से शुरू नहीं करना चाहेंगे। यदि आपने ऐसा किया है तो आपके मॉडल को आपके डेटासेट के हर एक नमूने पर प्रशिक्षित किया जाएगा और इस तरह यह ओवरफिटिंग का कारण बनेगा। आप हमेशा प्रशिक्षण प्रक्रिया से पहले अपने डेटा को विभाजित करना चाहते हैं और फिर एल्गोरिथ्म को केवल प्रशिक्षण के लिए डेटा के सबसेट का उपयोग करके प्रशिक्षित किया जाना चाहिए।

जैसा कि यह डिज़ाइन किया गया है फ़ंक्शन यह सुनिश्चित करता है कि डेटा को इस तरह से अलग किया जाता है कि यह हमेशा प्रत्येक युग के लिए डेटा के एक ही हिस्से पर ट्रेन करता है। यदि विकल्प चुना जाता है, तो सभी फेरबदल को युगों के बीच प्रशिक्षण नमूने के भीतर किया जाता है।

हालांकि, कुछ डेटासेट के लिए पिछले कुछ उदाहरण प्राप्त करना उपयोगी नहीं है, खासकर अगर डाटासेट वर्ग के आधार पर फिर से संगठित हो। तब आपकी कक्षाओं का वितरण तिरछा हो जाएगा। इस प्रकार आपको प्रशिक्षण और सत्यापन सेट में संतुलित वर्ग वितरण प्राप्त करने के लिए डेटा के सबसेट को निकालने के लिए किसी तरह के यादृच्छिक तरीके की आवश्यकता होगी। इसके लिए मैं हमेशा sklearn फ़ंक्शन का उपयोग निम्नानुसार करना पसंद करता हूं

from sklearn.model_selection import train_test_split

# Split the data
x_train, x_valid, y_train, y_valid = train_test_split(data, labels, test_size=0.33, shuffle= True)

यह फ़ंक्शन का उपयोग करने के लिए एक अच्छा आसान है जो आपको चाहिए। चर dataऔर labelsपहला उदाहरण के साथ मानक सुन्न matrices हैं।


1
मेरा मतलब यह नहीं था कि प्रत्येक युग के बाद अलग-अलग परीक्षण किए जाएं। मैं डेटासेट के अंत से डेटा प्राप्त करने के बारे में पूछ रहा था क्योंकि क्लास के अनुसार कई डेटासेट की व्यवस्था की जा सकती है। मैं इसके बारे में जानता हूं train_test_splitऔर अब आप पुष्टि करते हैं कि यह एक बेहतर तरीका है क्योंकि यह बेतरतीब ढंग से डेटासेट से परीक्षण / सत्यापन डेटा प्राप्त करेगा।
rnso

@rnso, दुर्भाग्यवश केरेस वह विकल्प प्रदान नहीं करता है। मुझे लगता है कि यह वास्तव में इस दायरे में नहीं है कि वे क्या पेशकश करना चाहते हैं। नाम में यादृच्छिक के साथ 2 अलग-अलग विधि इनपुट होने से कार्यान्वयन को थोड़ा भ्रमित कर देगा।
JahKnows

क्या आपने उस train_test_spli का उपयोग करके सत्यापन और परीक्षण डेटा की परिभाषा को नहीं मिलाया है?
21:05

यदि आप shuffleपैरामीटर का उपयोग करते हैं, तो क्या आप क्वास मॉडल shuffleके .fitलिए भी उपयोग करेंगे ?
शामून
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.