दिलचस्प पोस्ट
जावा के माड्यूलस को नकारात्मक संख्याओं के साथ करना चाहिए जैसा व्यवहार करना सबसे अच्छा तरीका है? nginx अपलोड client_max_body_size समस्या SQL डाटाबेस में प्राथमिक कुंजी के रूप में स्ट्रिंग्स एडीटी एंड्रॉइड गतिविधि के निर्माण की अनुमति नहीं देगा I पायथन – नेस्टेड सूची के दूसरे कॉलम में अधिकतम मान ढूँढना IISExpress दूरस्थ मशीन से एक 503 त्रुटि देता है शेल स्क्रिप्ट के अंदर से passwd कमांड का उपयोग करना Predict.lm () कैसे विश्वास अंतराल और भविष्यवाणी अंतराल गणना करता है? 1000 से अधिक प्राप्त करने के लिए कैसे? JSP में समान रूप में सत्यापन और प्रदर्शन त्रुटि संदेश कैसे करें? SQL सर्वर में दो भिन्न सर्वर से डेटा का चयन करना माउस स्थिति प्राप्त करें गीद – पूर्ववत धक्का दिया क्या लग सकता है कि किन भाषाओं को नियमित अभिव्यक्ति से मिलान किया जा सकता है? पुनरावृत्ति पर पुनरावर्ती को क्यों चुना जाना चाहिए?

कैफ लॉग को debug_info के साथ कैसे करें?

जब प्रशिक्षण के दौरान कठिनाई का सामना करना पड़ रहा है ( nan , नुकसान एकजुट नहीं होता है , आदि), कभी-कभी debug_info: true सेट करके अधिक वर्बोस ट्रेनिंग लॉग को देखने के लिए उपयोगी है debug_info: true 'solver.prototxt' फ़ाइल में debug_info: true है

प्रशिक्षण लॉग तब कुछ ऐसा दिखता है:

 I1109 ...] [Forward] Layer data, top blob data data: 0.343971 I1109 ...] [Forward] Layer conv1, top blob conv1 data: 0.0645037 I1109 ...] [Forward] Layer conv1, param blob 0 data: 0.00899114 I1109 ...] [Forward] Layer conv1, param blob 1 data: 0 I1109 ...] [Forward] Layer relu1, top blob conv1 data: 0.0337982 I1109 ...] [Forward] Layer conv2, top blob conv2 data: 0.0249297 I1109 ...] [Forward] Layer conv2, param blob 0 data: 0.00875855 I1109 ...] [Forward] Layer conv2, param blob 1 data: 0 I1109 ...] [Forward] Layer relu2, top blob conv2 data: 0.0128249 . . . I1109 ...] [Forward] Layer fc1, top blob fc1 data: 0.00728743 I1109 ...] [Forward] Layer fc1, param blob 0 data: 0.00876866 I1109 ...] [Forward] Layer fc1, param blob 1 data: 0 I1109 ...] [Forward] Layer loss, top blob loss data: 2031.85 I1109 ...] [Backward] Layer loss, bottom blob fc1 diff: 0.124506 I1109 ...] [Backward] Layer fc1, bottom blob conv6 diff: 0.00107067 I1109 ...] [Backward] Layer fc1, param blob 0 diff: 0.483772 I1109 ...] [Backward] Layer fc1, param blob 1 diff: 4079.72 . . . I1109 ...] [Backward] Layer conv2, bottom blob conv1 diff: 5.99449e-06 I1109 ...] [Backward] Layer conv2, param blob 0 diff: 0.00661093 I1109 ...] [Backward] Layer conv2, param blob 1 diff: 0.10995 I1109 ...] [Backward] Layer relu1, bottom blob conv1 diff: 2.87345e-06 I1109 ...] [Backward] Layer conv1, param blob 0 diff: 0.0220984 I1109 ...] [Backward] Layer conv1, param blob 1 diff: 0.0429201 E1109 ...] [Backward] All net params (data, diff): L1 norm = (2711.42, 7086.66); L2 norm = (6.11659, 4085.07) 

इसका क्या मतलब है?

Solutions Collecting From Web of "कैफ लॉग को debug_info के साथ कैसे करें?"

पहली नज़र में आप इस लॉग अनुभाग को दो में विभाजित देख सकते हैं: [Forward] और [Backward] स्मरण करो कि तंत्रिका नेटवर्क प्रशिक्षण अग्रेषित-पिछड़े प्रचार के माध्यम से किया जाता है:
एक प्रशिक्षण उदाहरण (बैच) को नेट से खिलाया जाता है और एक अग्रेषित पास मौजूदा पूर्वानुमान को दर्शाता है।
इस भविष्यवाणी के आधार पर एक हानि की गणना की जाती है। तब नुकसान व्युत्पन्न होता है, और चेन नियम का उपयोग करके एक ढाल का अनुमान लगाया जाता है और पिछड़ा हुआ है।

कैफे Blob डेटा संरचना
सिर्फ एक त्वरित पुनः टोपी कैफ डेटा / वज़न / मापदंडों आदि को संग्रहीत करने के लिए Blob डेटा संरचना का उपयोग करता है। इस चर्चा के लिए ध्यान देना महत्वपूर्ण है कि Blob के दो "पार्ट्स" हैं: data और diff Blob मूल्यों को data भाग में संग्रहीत किया जाता है। बैकप्रॉपैगेशन स्टेप के लिए एंटिफ पार्ट का उपयोग तत्व-वार ग्रेडिएंन्ट्स को स्टोर करने के लिए किया जाता है।

अग्रवर्ती पारण

आप लॉग के इस भाग में सूचीबद्ध सभी परतों को नीचे से ऊपर देखेंगे। प्रत्येक परत के लिए आप देखेंगे:

 I1109 ...] [Forward] Layer conv1, top blob conv1 data: 0.0645037 I1109 ...] [Forward] Layer conv1, param blob 0 data: 0.00899114 I1109 ...] [Forward] Layer conv1, param blob 1 data: 0 

परत "conv1" एक "conv1" परत है जिसमें 2 परम "conv1" : फ़िल्टर और पूर्वाग्रह नतीजतन, लॉग में तीन पंक्तियाँ हैं फिल्टर ब्ब्ब ( param blob 0 ) में data

  I1109 ...] [Forward] Layer conv1, param blob 0 data: 0.00899114 

यही कंडोलक्शन फिल्टर भार का वर्तमान L2 आदर्श है 0.00899
वर्तमान पूर्वाग्रह ( param blob 1 ):

  I1109 ...] [Forward] Layer conv1, param blob 1 data: 0 

जिसका अर्थ है कि वर्तमान में पूर्वाग्रह 0 पर सेट है

अंतिम लेकिन कम से कम नहीं, "conv1" परत में एक आउटपुट है, "top" नामक "conv1" (कैसे मूल …)। उत्पादन का एल 2 आदर्श है

  I1109 ...] [Forward] Layer conv1, top blob conv1 data: 0.0645037 

नोट करें कि [Forward] पास के सभी L2 मानों को सवाल में ब्लॉब्स के data भाग पर रिपोर्ट किया गया है

हानि और ढाल
[Forward] पास के अंत में नुकसान की परत आता है:

 I1109 ...] [Forward] Layer loss, top blob loss data: 2031.85 I1109 ...] [Backward] Layer loss, bottom blob fc1 diff: 0.124506 

इस उदाहरण में बैच का नुकसान 2031.85 है, हानि wrt fc1 की ढाल की गणना और fc1 ब्लॉब के diff भाग को पारित किया गया है। ढाल का L2 परिमाण 0.1245 है।

पिछला पास
बाकी सभी परतें इस भाग में नीचे से नीचे सूचीबद्ध हैं आप देख सकते हैं कि अब रिपोर्ट की गई एल 2 परिमाण Blobs (पैरामीटर और परतों के इनपुट) के diff भाग के हैं।

आखिरकार
इस पुनरावृत्ति की अंतिम लॉग लाइन:

 [Backward] All net params (data, diff): L1 norm = (2711.42, 7086.66); L2 norm = (6.11659, 4085.07) 

दोनों डेटा और ग्रेडिएन्ट के कुल एल 1 और एल 2 के परिमाण की रिपोर्ट करता है।

मुझे क्या खोजना चाहिए?

  1. यदि आपके पास अपने नुकसान में nan , तो देखें कि आपका डेटा या अंतर किस nan में बदल जाता है: किस परत पर? जिस पर चलना?

  2. ढाल परिमाण को देखो, वे उचित होना चाहिए। यदि आप e+8 साथ मूल्यों को देखना शुरू कर रहे हैं तो आपके डेटा / ग्रेडियेंट को उड़ा देना शुरू हो रहा है अपने सीखने की दर कम करें!

  3. देखें कि diff एस शून्य नहीं है ज़ीरो डिफिफ का कोई अर्थ नहीं है = कोई अद्यतन नहीं = कोई सीख नहीं यदि आप यादृच्छिक वजन से शुरू करते हैं, तो उच्च विचरण के साथ यादृच्छिक वजन पैदा करने पर विचार करें।