2015-06-28 7 views
8

मैं वर्तमान में कैफे में अपनी खुद की हानि परत को लागू करने की कोशिश कर रहा हूं, और ऐसा करने का प्रयास करते समय, संदर्भ के रूप में अन्य परतों का उपयोग कर रहा हूं। एक चीज जो मुझे पहेली बनाती है, का उपयोग Backward_cpu में है। मैं संदर्भ के रूप में EuclideanLossLayer का उपयोग करूँगा। यहाँ मेरी सवाल कर रहे हैंकैफे में यूक्लिडियन लॉस लेयर

  • यह मेरी समझ है कि top[0]->cpu_diff() रखती अगले परत से त्रुटि व्युत्पन्न है, लेकिन क्या कोई अन्य परत होती है, तो यह कैसे initialised है? के बाद से यह EuclideanLossLayer में किसी भी चेक के बिना प्रदर्शन किया जाता है:

    const Dtype alpha = sign * top[0]->cpu_diff()[0]/bottom[i]->num(); 
    caffe_cpu_axpby(
        bottom[i]->count(),    // count 
        alpha,        // alpha 
        diff_.cpu_data(),     // a 
        Dtype(0),       // beta 
        bottom[i]->mutable_cpu_diff()); // b 
    

    :

    const Dtype alpha = sign * top[0]->cpu_diff()[0]/bottom[i]->num(); 
    
  • फिर, EuclideanLossLayer में, सक्रियण के संबंध में त्रुटि के लिए व्युत्पन्न निम्नलिखित कोड का टुकड़ा का उपयोग कर गणना की जाती है अगर मेरी पहली धारणा सही है, और top[0]->cpu_diff() वास्तव में उपर्युक्त परत के लिए त्रुटि व्युत्पन्न करता है, तो हम पूरे वेक्टर यानी top[0]->cpu_diff() द्वारा गुणा करने के विरोध में केवल पहले तत्व यानी top[0]->cpu_diff()[0] का उपयोग क्यों करते हैं?

उत्तर

13

नुकसान परतों के लिए, कोई अगले परत है, और इसलिए शीर्ष diff ब्लॉब तकनीकी रूप से अपरिभाषित और अप्रयुक्त है - लेकिन Caffe इस पूर्व आबंटित अंतरिक्ष उपयोग कर रहा है असंबंधित डाटा स्टोर करने की: Caffe एक उपयोगकर्ता- साथ नुकसान परतों गुणा का समर्थन करता है परिभाषित वजन (प्रोटोटाक्स्ट में loss_weight), यह जानकारी (एक एकल स्केलर फ़्लोटिंग पॉइंट नंबर) शीर्ष ब्लॉब के diff सरणी के पहले तत्व में संग्रहीत है। यही कारण है कि आप प्रत्येक हानि परत में देखेंगे, कि वे उस कार्यक्षमता का समर्थन करने के लिए उस राशि से गुणा करते हैं। यह Caffe's tutorial about the loss layer में समझाया गया है।

यह वजन आमतौर पर नेटवर्क पर सहायक नुकसान जोड़ने के लिए उपयोग किया जाता है। आप इसके बारे में Google के Going Deeper with Convoltions या Deeply-Supervised Nets में इसके बारे में अधिक पढ़ सकते हैं।

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