मैं Tensorflow बैकएंड के साथ Keras में RefineNet को लागू करने का प्रयास कर रहा हूँ। मैं https://gist.github से ResNet-101 फ्रंट-एंड और पूर्व-प्रशिक्षित वज़न का उपयोग कर रहा हूं। com/flyyufelix/65018873f8cb2bbe95f429c474aa1294। मॉडल सफलतापूर्वक संकलित करता है, लेकिन प्रशिक्षण के दौरान अभिसरण नहीं करता है: यह केवल 1 से 5 प्रशिक्षण चरणों के बाद हमेशा एकल वर्ग में परिवर्तित होता है।

मेरे द्वारा कोशिश की गई सामग्री की सूची/हालांकि:

  • इनपुट डेटा एक-हॉट एन्कोडेड है
  • इनपुट छवियों में सही संगत मास्क होते हैं
  • हानि फ़ंक्शन श्रेणीबद्ध क्रॉसेंट्रॉपी है
  • पूर्व-प्रशिक्षित वजन सही हैं, फ्रंट-एंड इनपुट छवियों (जैसे बिल्लियों) को सही ढंग से वर्गीकृत कर रहा है।
  • फ़्रंट-एंड परतों को फ़्रीज़/अनफ़्रीज़ करने से कोई फ़र्क नहीं पड़ता
  • विभिन्न अनुकूलक (एडम, एसजीडी), विभिन्न सीखने की दर (0.01 - 0.000001)
  • नेटवर्क एक प्रशिक्षण नमूने पर भी अभिसरण / ओवरफिट नहीं करता है
  • कक्षा असंतुलन: मैंने भारित हानि का उपयोग करने की कोशिश की, मदद नहीं की। साथ ही, नेटवर्क हमेशा सबसे बड़े वर्ग में परिवर्तित नहीं होता है।
  • नेटवर्क ग्राफ़ की जाँच की और उनकी तुलना RefineNet पेपर से आर्किटेक्चर से की।
  • किसी प्रकार का आरंभीकरण मुद्दा हो सकता है, लेकिन केरस का डिफ़ॉल्ट आरंभीकरण गुठली के लिए glorot_uniform है और पूर्वाग्रहों के लिए शून्य है, इससे बेहतर कुछ नहीं सोच सकता।
  • ReLU सभी मर सकते थे, लेकिन ऐसा कुछ प्रशिक्षण चरणों के बाद नहीं होना चाहिए, है ना? मैंने LeakyRelU की कोशिश की, मदद नहीं की।
  • विभिन्न इनपुट आकार, बैच आकार, यादृच्छिक फसल, पहलू अनुपात (इस बिंदु पर कुछ हद तक हताश हो रहा था) की कोशिश की।
  • यादृच्छिक शोर इनपुट करने का प्रयास किया, वही व्यवहार।

आखिरी बिंदु मुझे लगता है कि वास्तुकला केवल इनपुट की अवहेलना कर रहा है लेकिन मुझे नहीं पता कि कहां, कैसे और क्यों।

प्रशिक्षण के दौरान उदाहरण आउटपुट:

Training:
Step 0, loss 15.566238403320312, acc 0.012790679931640625
Step 1, loss 9.91278076171875, acc 0.36734771728515625
Step 2, loss 10.994621276855469, acc 0.27989959716796875
Step 3, loss 10.00101375579834, acc 0.3611602783203125
Step 4, loss 11.439224243164062, acc 0.2010345458984375
Step 5, loss 11.397968292236328, acc 0.229278564453125
Step 6, loss 9.844161987304688, acc 0.3711433410644531
Step 7, loss 9.981706619262695, acc 0.36286163330078125
Step 8, loss 11.335559844970703, acc 0.21475982666015625
Step 9, loss 9.997631072998047, acc 0.3608970642089844
...

पूरा कोड निम्नलिखित Google Colab नोटबुक में पाया जा सकता है: https://colab.research.google .com/drive/1OlujuKZYhRaTm9h7rHAPEi9gkiYmQLR_

मैंने समस्या को पुन: उत्पन्न करने के लिए इसे यथासंभव आसान बनाने की कोशिश की है।

किसी भी मदद/विचारों की बहुत सराहना की जाएगी!

1
Attila 10 अप्रैल 2019, 11:05

1 उत्तर

सबसे बढ़िया उत्तर

कन्वर्ज़न लेयर के बाद बैच नॉर्मलाइज़ेशन लेयर्स को जोड़ने से समस्या हल हो गई।

0
Attila 10 सितंबर 2019, 07:42