2017-03-29 46 views
1

我讀朱古力的圖層源代碼,但我得到了以下幾個問題:caffe什麼是SetLossWeights?

  1. 什麼是Layer::SetLossWeights功能做什麼?我知道層類的內部,有一個loss_變量,其中記錄:

指示每個頂部斑點是否具有在目標函數中非零重量 的向量。

他們有一些關係嗎?

  1. 在caffe.proto文件中,LayerParameter loss_weight僅用於丟失圖層,是否正確?

非常感謝。

回答

1
  1. 損失重量的目的是結合多個層次的損失。因此,Layer::SetLossWeights將損失權重分配給loss_變量,diff blob用於forward以計算總損失。
  2. 由於具有後綴損失的默認圖層具有損失權重1,其他圖像具有0。但是,任何能夠反向傳播的圖層都可以被賦予非零的loss_weight。

有關詳細信息請參閱caffe loss tutorial

編輯:

Loss weight如果輸入到執行未由作者意圖backprop另一層纔會改變。正如他們在pull request中所說的Accuracy layer它會中斷。 diffloss layer中的用途是存儲loss weight不存儲漸變。有關更多詳細信息,請參見caffe-users group

+0

我不清楚的一件事是,通過將'loss_weight'存儲在頂部blob的'diff'變量中,假設'loss_weight'會隨着時間而改變。因爲顯然,在執行反向傳播之後,頂部blob的'diff'已更改。是對的嗎? – Johnnylin

+0

@Johnnylin如果你在最後有損失層,那麼它不會改變(見損失碼)。否則它會改變。 – lnman

+0

如果它是一個損失層,'loss_weight'仍然會改變超時。損失層需要計算diff並將其存儲在diff數組中。 ? – Johnnylin