2

事前トレーニング済みの GoogLeNet を使用し、二項分類問題のためにデータセットで微調整しました。"loss3/top1"検証データセットは98.5%を与えるようです。しかし、評価データセットでパフォーマンスを評価すると、50% の精度が得られます。train_val.prototxt にどのような変更を加えたとしても、deploy.prototxt にも同じ変更を加えましたが、これらの行でどのような変更を行うべきかわかりません。

name: "GoogleNet"
layer {
  name: "data"
  type: "input"
  top: "data"
  input_param { shape: { dim:10 dim:3 dim:224 dim:224 } }
}

助言がありますか???

4

1 に答える 1

4

*をさらに変更する必要はありませんがdeploy.prototxt、データをネットにフィードする方法を変更する必要があります。トレーニング/検証画像を変換したのと同じ方法で、評価画像を変換する必要があります。
たとえば、classifier.py入力画像を適切に初期化されたcaffe.io.Transformerクラスに渡す方法を参照してください。

prototxt"Input"にあるレイヤーは、caffe が 10 x 3 x 224 x 224 の形状の入力 BLOB に従ってメモリを割り当てるための単なる宣言です。


* もちろん、train_val.prototxtdeploy.prototxtまったく同じであることを確認する必要があります (入力レイヤーと損失レイヤーを除く): これには、レイヤーが同一であることの確認が含まれます。これには、caffe がレイヤー名を使用して「caffemodel」から重みを割り当てるためですファイルをロードする実際のパラメータに変更します。名前が一致しないと、caffe は一部のレイヤーにランダムな重みを使用します。

于 2016-05-06T13:52:54.833 に答える