zf netのprototxtファイルの手順を再現することに興味があります。私が確信している部分はソフトマックス層です。そしてそれは(W 1,2,9 *のH)寸法に整形さPyfaster RCNN ZFネットワークモデルのSoftmax入力寸法
layer {
name: "rpn_cls_score"
type: "Convolution"
bottom: "rpn/output"
top: "rpn_cls_score"
convolution_param {
num_output: 18 # 2(bg/fg) * 9(anchors)
kernel_size: 1 pad: 0 stride: 1
weight_filler { type: "gaussian" std: 0.01 }
bias_filler { type: "constant" value: 0 }
}
}
ここで:最後
layer {
bottom: "rpn_cls_score"
top: "rpn_cls_score_reshape"
name: "rpn_cls_score_reshape"
type: "Reshape"
reshape_param { shape { dim: 0 dim: 2 dim: -1 dim: 0 } }
}
rpn_cls_scoreは、ここでの寸法(1,18、H、W)を使用して作成されそれはsoftmaxに渡されます:
layer {
name: "rpn_cls_prob"
type: "Softmax"
bottom: "rpn_cls_score_reshape"
top: "rpn_cls_prob"
}
私の質問はこれです。 caffeのオンラインドキュメントによると、softmaxは1次元の入力を受け取りますが、rpn_cls_score_reshapeは寸法(1,2,9 * h、w)を持ちます。 softmaxはすべてのインデックスを合計しますか?または、C + +コードが示すように、残りのインデックスに対してのみ正準軸と合計を選択しますか?この場合、rpn_cls_score_reshapeは2つの配列(1、channel = 1,9 * h、w)と(1、channel = 2,9 * h、w)の2つの配列に分割され、各要素で9 * h * w要素の指数を合計してsoftmaxを実行し、元の次元(1,2,9 * h、w)の配列に再アセンブリしてrpn_cls_probとして返します。そうでない場合、softmaxは複数の次元を持つ入力配列をどのように扱いますか? SofmaxParameter
として
おかげ..