2016-09-21 12 views
0

データをテストしたいと思う事前に訓練されたネットワークがあります。私は.prototxtを使ってネットワークアーキテクチャを定義しました。私のデータレイヤーは、自分のデータとそのラベルのパスを持つ.txtファイルを受け取って、それを前処理してからネットワークに送り込むカスタムPythonレイヤーです。反復回数を設定しないでネットワークをテストする

ネットワークの終わりには、ネットとラベル(最初のレイヤー)によって作成されたクラス予測を取得し、たとえばすべてのバッチに関する精度を表示するカスタムPythonレイヤーがあります。

すべての例がネットを通過するまでネットワークを実行したいと思います。 I've found、ネットワークをテストするためにコマンドの検索中に

はしかし、:

caffe test -model architecture.prototxt -weights model.caffemodel -gpu 0 -iterations 100 

私は-iterationsを設定しない場合は、デフォルト値(50)を使用しています。

反復回数を設定せずにcaffeテストを実行する方法を知っている人はいますか?

ありがとうございました!

+1

"反復回数を設定しない"で反復回数が1に等しいことを意味しますか?実際には、 'n * batch_size == TOTAL_NUM'を確実にするために' iterations'に数nを設定することができます。ここで 'TOTAL_NUM'はすべてのサンプルの数です。あなたのメモリが十分な大きさであれば、 'iterations = 1、batch_size = TOTAL_NUM'を設定して、一度にネットを通してすべての例を渡すことができます。 – Dale

+0

はい、私が今やっていることは、 'TOTAL_NUM/batch_size'である' n'を計算し、nを引数として渡す 'caffe test'を実行することです。しかし、私は 'TOTAL_NUM'を(例えば私のデータセットを増やして)変更するとしましょう...' n 'を事前に決めることなく 'caffe test'を実行する方法があることを期待していました。 – rafaspadilha

+0

'caffe test'を起動するスクリプト(' .bat'や '.sh')にあらかじめ' n'を計算するコードを書くことができます。 – Dale

答えて

1

いいえ、Caffeには、正確に1つしか実行されていないことを検出する機能がありませんエポック(各入力ベクトルを正確に1回使用します)。これを行うための検証入力ルーチンを書くことができますが、Caffeは量を供給することを期待しています。このように、さまざまな検証データセットに対して簡単に比較できる結果を生成することができます。しかし、私はそれが便利な機能になることに同意します。

この機能の欠如は、トレーニングとインタースティシャルテストの欠如に関連する可能性があります。 トレーニングでは、特定のアプリケーションに対して最も正確なモデルを得るために、ハイパーパラメータを調整します。これは明らかに、TOTAL_NUM(より大きい訓練セットが与えられている)よりも、エポックの数よりも密接に依存しています。

固定トレーニングセットでは、エポック(x軸)に対して精度(y軸)をグラフ化することがよくあります。これは、バッチサイズを調整する際に、結果が得やすいためです。しかし、トレーニングセットのサイズを半分にすると、最も類似したグラフは、エポック番号ではなく、TOTAL_NUMになります。

また、テストセットのサイズを制限することで、トレーニング中にそのフィードバックが長く待たされることがなくなります。例えば、ImageNetデータセット(1.2M画像)に対するトレーニングでは、一般的に約1000枚の画像、典型的には1エポックあたり5回以上の画像をテストします。

+0

はい、私はテスト段階を指しています。私はすでにモデルを訓練していますが、テストデータセットが変更されるたびに反復回数を定義する必要はなく、正確に1つのエポックを実行したいと考えています。 – rafaspadilha

+0

ああ...同じ反応ですが、恐れ入りますが、あなたの質問にマッチする答えを編集します。ごめんなさい。 – Prune

関連する問題