2016-06-27 10 views
1

CaffeでLMDBファイルのテスト段階のみを設定する方法を知りたいと思います。私はすでに私のモデルを訓練しています、すべてが良いように見える、私の損失は減少し、私が1枚1枚で読み込まれた画像にも得られる出力も良いようです。CaffeのLMDBファイルからのテスト

ここで私のモデルが別のLMDBテストセットでどのように動作しているかを見たいと思いますが、正常に実行できないようです。私の損失関数が既にcaffeで定義されているので、一度に1つずつイメージをロードすることによってループを行うことは理想的ではないでしょう。これは私にそれを再定義する必要があります。

これはこれまで私が持っていたものですが、この結果は理にかなっていません。列車からの損失をこれと比較すると、私はこれから得られる損失を比較すると、一致しません(桁違いのオーダー)。誰かが私の問題が何であるか考えている人はいますか?

caffe.set_device(0) 
caffe.set_mode_gpu() 

net = caffe.Net('/home/jeremy/Desktop/caffestuff/JP_Kitti/all_proto/mirror_shuffle/deploy_JP.prototxt','/home/jeremy/Desktop/caffestuff/JP_Kitti/all_proto/mirror_shuffle/snapshot_iter_10000.caffemodel',caffe.TEST) 


solver = None # ignore this workaround for lmdb data (can't instantiate two solvers on the same data) 
solver = caffe.SGDSolver('/home/jeremy/Desktop/caffestuff/JP_Kitti/all_proto/mirror_shuffle/lenet_auto_solverJP_test.prototxt') 
niter = 100 
test_loss = zeros(niter) 
count = 0 
for it in range(niter): 
    solver.test_nets[0].forward() # SGD by Caffe 

    # store the test loss 

    test_loss[count] = solver.test_nets[0].blobs['loss'] 
    print(solver.test_nets[0].blobs['loss'].data) 
    count = count+1 

答えて

0

私の答えはhereです。平均を減算することを忘れないでください。そうしないと、精度が低くなります。上に掲載されたコードへのリンクは、そのことを考慮しています。

+0

ありがとうございますが、私にはもっと簡単な方法があるようです。あなたのコードでは、それを通過するデータを1つずつ調べる方法をネットに手動で指定する必要があります。しかし、トレーニング段階では、まったく同じデータ構造のために、caffeはすべてを自動的に処理します。あなたはそれに似た何かをする方法を知っていますか? – jerpint

+0

あなたのようなテクニックを使って、フォローアップと同じように、私のテストセットを通過するのに本当に長い時間がかかっています。私はcaffeの構造がこの種の計算を行う際に高度に並列化されるように最適化されていると考えています。これはボトルネックを避けるためです。 – jerpint

+0

この '' caffe test -model = models/bvlc_reference_caffenet/train_val.prototxt --weights = models/bvlc_reference_caffenet/ .caffemodel --iterations = 6400 --gpu = 0''? –

関連する問題