Şu anda kendi kaybı katmanımı kafein içinde uygulamaya çalışıyorum ve bunu yapmaya çalışırken, diğer katmanları referans olarak kullanıyorum. Bununla birlikte, beni şaşırtan bir şey, Backward_cpu
numaralı telefondan top[0]->cpu_diff()
kullanımıdır. Referans olarak EuclideanLossLayer
kullanıyorum. İşte benim sorularıCaffe'de Euclidean Loss Katmanı
Anladığım kadarıyla bu bir sıfırlanır nasıl
top[0]->cpu_diff()
hata sonraki katmandan türevi, ancak başka tabaka varsa ne tutmasıdır nelerdir? herhangi bir kontroller olmaksızınEuclideanLossLayer
kullanıldığı için: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
:
EuclideanLossLayer
olarak,const Dtype alpha = sign * top[0]->cpu_diff()[0]/bottom[i]->num();
Yine, aktivasyon ile ilgili hata için türevinin aşağıdaki kod parçası kullanılarak hesaplanır İlk varsayım doğruysa ve
zarar katmanları içintop[0]->cpu_diff()
gerçekten de yukarıdaki katman için hata türevini tutuyorsa, neden sadece tüm elemanın yanitop[0]->cpu_diff()
tüm vektör tarafından çarpılmasının aksinetop[0]->cpu_diff()[0]
ilk elemanını kullanıyoruz?