これは、トレーニング前にモデルに既存のウェイトを追加する方法に関する質問hereの拡張です。caffeの最終レイヤーを変更する
既存のウェイトを使用したかったのですが、最終的なレイヤーは1000ではなく50を出力しました(ネットワークは1000アイテムを分類するように訓練されていたので)。以前の投稿から、出力レイヤの名前を変更することで、私は重みを追加することができました。しかし、その後、最終層に依存する他の層があることに気付きました。ここでVGGネットワークからの抜粋です:
layer {
name: "loss3/classifier"
type: "InnerProduct"
bottom: "pool5/7x7_s1"
top: "loss3/classifier"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
inner_product_param {
num_output: 50
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
value: 0
}
}
}
layer {
name: "loss3/loss3"
type: "SoftmaxWithLoss"
bottom: "loss3/classifier"
bottom: "label"
top: "loss3/loss3"
loss_weight: 1
}
layer {
name: "loss3/top-1"
type: "Accuracy"
bottom: "loss3/classifier"
bottom: "label"
top: "loss3/top-1"
include {
phase: TEST
}
}
layer {
name: "loss3/top-5"
type: "Accuracy"
bottom: "loss3/classifier"
bottom: "label"
top: "loss3/top-5"
include {
phase: TEST
}
accuracy_param {
top_k: 5
}
}
私の質問は以下のとおりです。
正確下部と上部の引数は何?
後続の2つのレイヤーで "loss3/classifier"の名前を変更する必要がありますか?
はい。あなたが正しいです。それはgooglenetです。私はそのような基本的な質問をお詫び申し上げます。私は間違いなくチュートリアルを進めます。ありがとうございました! – MoneyBall