私はカスタムレイヤーを書きましたが、accuracy
とloss
の両方を同時に出力したいと思います。これは、次のようにしてcaffe
を使用して達成できますか?似Caffeの同じレイヤーからの出力精度と損失
何か:
layer {
name: ""
bottom: ""
top: loss1
top: loss2
top: accuracy
}
私はカスタムレイヤーを書きましたが、accuracy
とloss
の両方を同時に出力したいと思います。これは、次のようにしてcaffe
を使用して達成できますか?似Caffeの同じレイヤーからの出力精度と損失
何か:
layer {
name: ""
bottom: ""
top: loss1
top: loss2
top: accuracy
}
あなたの層のために必要な数の「トップ」のを持つことができます。
まず、レイヤが計算する「トップ」の数を定義する必要があります。これはExactNumBottomBlobs()
をオーバーライドすることによって行われます。
LayerSetup
とReshape
の方法では、新しい「トップ」の数を考慮し、これらの「トップ」もセットアップして再構成する必要があります。
layer {
name: "my_new_layer"
type: "MyNewLayer"
bottom: "x"
top: "loss1"
top: "loss2"
top: "accuracy"
loss_weight: 1
loss_weight: 1.3 # you might want loss2 to have a bit more impact
loss_weight: 0 # accuracy should not affect gradients...
}
そして、あなたの層のクラスではなく以上、LossLayer<Dtype>
クラスの派生する必要があります:あなたの層は、損失層であるため、あなたはそれぞれの「トップ」のloss_weight
値を持っている必要がありますことを
注意抽象Layer<Dtype>
クラス。
caffeで新しいレイヤーを実装する方法の詳細については、this pageを参照してください。
"SoftmaxWithLoss"
レイヤーにオプションの2番目の「トップ」レイヤーがあることに注意してください。このレイヤーのコードを見て、これがどのように実装されているか確認してください。