深層残余ネットワークのCaffe prototxt を見て、"Scale"
レイヤー。
layer {
bottom: "res2b_branch2b"
top: "res2b_branch2b"
name: "scale2b_branch2b"
type: "Scale"
scale_param {
bias_term: true
}
}
ただし、このレイヤーは Caffeレイヤーカタログ では使用できません。誰かがこのレイヤーの機能とパラメーターの意味を説明したり、Caffeの最新のドキュメントを参照したりできますか?
Caffe here の詳細なドキュメントを見つけることができます。
具体的には、"Scale"
レイヤーのドキュメント reads :
2つの入力Blobの積を計算します。後者のBlobの形状は前者の形状に一致するように「ブロードキャスト」されます。後者のBlobを並べて、要素ごとの積を計算するのと同じです。
2番目の入力は省略できます。その場合、レイヤーのパラメーターとして学習されます。
あなたの場合、(単一の「下」)、この層は"res2b_branch2b"
を乗算するためのスケール係数を学習しているようです。さらに、scale_param { bias_term: true }
は、レイヤーが乗法的倍率だけでなく定数項も学習することを意味するためです。したがって、フォワードパスは以下を計算します。
res2b_branch2b <- res2b_branch2b * \alpha + \beta
トレーニング中、ネットは\alpha
および\beta
の値を学習しようとします。
caffe.proto file にもいくつかのドキュメントがあります。「ScaleParameter」を検索できます。
あなたの投稿にヒープをありがとう:)スケールレイヤーはまさに私が探していたものでした。スカラー(0.5)でスケーリングし、-2を「追加」するレイヤーの例が必要な場合(およびこれらの値は変更しないでください):
layer {
name: "scaleAndAdd"
type: "Scale"
bottom: "bot"
top: "scaled"
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
scale_param {
filler {
value: 0.5 }
bias_term: true
bias_filler {
value: -2
}
}
}
(おそらく、decay_multはここでは不要です。しかし、知らない。コメントを参照してください。)それ以外:
"param {"
always(?)は重みを指し、バイアスは2番目です(lr_multはScaleLayer固有ではありません)すべてcaffe.protoから取得。そして:両方のフィラー値= 1.2で上のレイヤーのみをテストしました。