私はCaffeを使用してConstitutional Neural Networkに取り組んでいます。 私は、層 "ハンガリアン"を持つprototxtファイルを持っています。その層には2つの付加的な最上層がある。box_confidences
とbox_assignments
。 box_confidences
は下のように他の層box_loss
で使用されていることを次にCaffe Convolutional Neural Networkのレイヤーを初期化する
layer {
name: "hungarian"
type: "HungarianLoss"
bottom: "bbox_concat"
bottom: "boxes"
bottom: "box_flags"
top: "hungarian"
top: "box_confidences"
top: "box_assignments"
loss_weight: 0.03
hungarian_loss_param {
match_ratio: 0.5
permute_matches: true
}
}
layer{
name: "box_loss"
type: "SoftmaxWithLoss"
bottom: "score_concat"
bottom: "box_confidences"
top: "box_loss"
}
マイクエリです
(1)私はbox_confidences
とbox_assignments
これらのセットアップ層には必要ですか?
(2)必要に応じて、このprototxtファイルにレイヤーを設定する方法はありますか?その層は、私はちょうど乱雑にならないいくつかの他のコードのため.....
を置くだけでBLOBデータを保持しているし、どのようにこれら2つの層はHungarianLossLayer
クラスのメンバ関数で使用されている
void HungarianLossLayer<Dtype>::Forward_cpu(const vector<Blob<Dtype>*>& bottom, const vector<Blob<Dtype>*>& top){
...............
...............
...............
Dtype* top_confidences = top[1]->mutable_cpu_data();
...............
...............
...............
for (int i = 0; i < num_pred; ++i) {
top_confidences[n * num_pred + i] =
assignment[i] < num_gt_[n] ? Dtype(1) : Dtype(0);
Dtype* top_assignments = top[2]->mutable_cpu_data();
top_assignments[n * num_pred + i] =
assignment[i] < num_gt_[n] ? assignment[i] : Dtype(-1);
}
...............
...............
}
として見ることができます。
従ってbox_confidences
およびbox_assignments
はデータブロブであり、サイズはnum_pred
です。コードを実行していない間に、num_pred
の値を知ることは難しいです。
prototxtファイルにこれらの2つのレイヤーを設定するにはどうすればよいでしょうか?