-1

はそのcaffeを使用して複数の損失層を動作させるにはどうすればよいですか?私はどのように働いている、カフェを使用して、このネットワークを訓練するとき

Conv(1-1)-Conv(1-2)-Loss1-Conv(2-1)-Conv(2-2)-Loss2 

のようないくつかのネットワークを作りますか? Conv(2-1)およびConv(2-2)は、Loss2を使用して更新されます。私はそれを得ることができます。

しかし、Conv(1-1)とConv(1-2)の重みを更新する方法はありますか? Loss1のみを使用していますか? Conv(2-1)の勾配とLoss1の勾配の両方の和を使用するか?

答えて

0

Caffe(他のSGDベースのソルバーと同様)は、チェーンルールを使用して導関数を計算します。ネットの損失は、両方の損失層の合計であり、推定される勾配は、全体の損失の勾配である。 loss1 w.r.t conv2のパラメータの導関数はゼロであるため、loss1はconv2のパラメータの更新には影響しません。

+0

はい、loss1はconv2の重みに影響しません。 conv1の体重はいかがですか?全体の損失(両方の損失レイヤの合計)によって更新されたコンバレイヤのすべてを意味しますか? –

+0

@HotekHanネットのグラジエントを計算することは、チェーンルールのおかげで非常に簡単です。計算をレイヤーごとの製品に「分割」することができます。 2つの項の和である損失を見ると、勾配は2つの導関数の合計です。 – Shai

+1

あなたのためにありがとう。 –

関連する問題