11

कैफी पर, मैं अर्थपूर्ण विभाजन के लिए एक पूर्ण रूप से कनवॉल्यूशन नेटवर्क को लागू करने की कोशिश कर रहा हूं। मैं सोच रहा था वहाँ निम्नलिखित अति मानदंडों के लिए आपके 'solver.prototxt' मूल्यों की स्थापना के लिए एक विशेष रणनीति है:कैफे | solver.prototxt मूल्य सेटिंग रणनीति

  • test_iter
  • test_interval
  • iter_size
  • max_iter

उस पर निर्भर करता है आपके प्रशिक्षण सेट के लिए आपके पास छवियों की संख्या है? यदि हां, तो कैसे?

1. प्रशिक्षण समूह का आकार और आप प्रशिक्षण उदाहरण की कुल संख्या का करते हैं:

+0

एक अन्य मेटा पैरामीटर 'weight_decay' है। [यह धागा] देखें (http://stackoverflow.com/q/32177764/1714410) इसे कैसे सेट करें। – Shai

उत्तर

28

एक सार्थक तरीके से इन मूल्यों को निर्धारित करने के लिए, आप अपने डेटा के बारे में जानकारी के कुछ ही अधिक बिट की आवश्यकता है इस मात्रा को T पर कॉल करें।
2. ट्रेनिग बैच आकार एक बैच में एक साथ संसाधित प्रशिक्षण उदाहरणों की संख्या, यह आमतौर पर 'train_val.prototxt' में इनपुट डेटा परत द्वारा निर्धारित की जाती है। उदाहरण के लिए, this file में ट्रेन बैच आकार 256 पर सेट किया गया है। आइए इस मात्रा को tb पर इंगित करें।
3. प्रमाणीकरण सेट आकार आपके मॉडल को सत्यापित करने के लिए आपके द्वारा सेट किए गए उदाहरणों की कुल संख्या, आइए V द्वारा इसे इंगित करें।
4. परीक्षण चरण के लिए batch_size में प्रमाणीकरण बैच आकार मूल्य सेट। this example में यह 50 पर सेट है। चलिए इसे vb पर कॉल करें।

अब, प्रशिक्षण के दौरान, आप थोड़ी देर में अपने नेट के प्रदर्शन का एक पक्षपातपूर्ण अनुमान प्राप्त करना चाहते हैं। ऐसा करने के लिए आप test_iter पुनरावृत्तियों के लिए सत्यापन सेट पर अपना नेट चलाएं। पूरे सत्यापन सेट को कवर करने के लिए आपको test_iter = V/vb होना चाहिए।
आप इस अनुमान को कितनी बार प्राप्त करना चाहते हैं? यह वास्तव में आप पर निर्भर है। यदि आपके पास बहुत बड़ा सत्यापन सेट और धीमी नेट है, तो अक्सर सत्यापन करने से प्रशिक्षण प्रक्रिया बहुत लंबी हो जाएगी। दूसरी तरफ, अक्सर पर्याप्त रूप से मान्य नहीं होने से आपको यह ध्यान देने से रोका जा सकता है कि आपकी प्रशिक्षण प्रक्रिया कबूल हो सकती है। test_interval यह निर्धारित करता है कि आप कितनी बार मान्य करते हैं: आम तौर पर छोटे और तेज़ जाल के लिए, आप 512 के क्रम में test_interval सेट करने वाले बड़े जाल के लिए आप निम्न मान चुन सकते हैं। फिर, आप सब पर।

पूरे प्रशिक्षण सेट को कवर करने के लिए ("युग" को पूरा करने के लिए) आपको T/tb पुनरावृत्तियों को चलाने की आवश्यकता है। आम तौर पर कई युगों के लिए एक ट्रेन, max_iter=#epochs*T/tb

iter_size के संबंध में: यह कई प्रशिक्षण मिनी बैचों पर औसत ग्रेडियेंट की अनुमति देता है, this thread अधिक जानकारी के लिए देखें।

+2

आपको बहुत बहुत धन्यवाद! इसने कई चीजों को मंजूरी दे दी :) –

+0

@Shai - विस्तृत उदाहरण के लिए धन्यवाद। मैं अभी भी 'एलेक्सनेट' के साथ 'कैफे' के उपयोग के मामले में उलझन में हूं। मेरे पास '115GB' मेमोरी है और' ImageNet ILSVRC 2012' से एलएमडीबी में 'ट्रेन' और 'वैल' डेटा सेट का उपयोग कर सिस्टम है। मैं [इस सॉल्वर फ़ाइल] का उपयोग कर रहा हूं (https://github.com/intel/caffe/blob/master/models/intel_optimized_models/alexnet/solver.prototxt) सभी मानकों के साथ 'max_iteration = 100' को छोड़कर)।मैं समझने में असफल रहा कि मेमोरी खपत लगभग 10 जीबी क्यों है? यह 'कैफे' के रूप में छवियों के बैच पर पूर्ण डेटा के रूप में चलने वाला तरीका छोटा होना चाहिए। कोई विचार यह गणना कैसे की जाती है? –

+0

@CetanArvindPatil ऐसा लगता है कि आप मॉडल के पैरामीटर और ट्रेन/वैल गणना के लिए रैम उपयोग के लिए भंडारण आवश्यकताओं को भ्रमित कर रहे हैं। कैफी स्टोर सभी ** पैरामीटर ** + उनके डेरिवेटिव में स्टोर करता है, इसके अतिरिक्त यह ** डेटा ** (ट्रेन/वैल बैचों) और डेरिवेटिव्स (बैकप्रॉप के लिए) स्टोर करता है। कुछ हलकों को प्रति-पैरामीटर समायोज्य सीखने की दर (जैसे '"एडम" ') के लिए अतिरिक्त संग्रहण की आवश्यकता होती है। इन सभी को निश्चित रूप से बहुत सी रैम की आवश्यकता हो सकती है। उदाहरण देखें [यह धागा] (https://stackoverflow.com/q/36526959/1714410) – Shai

संबंधित मुद्दे