2017-06-15 33 views
0

在Caffe安裝中給出的MNIST示例中。Caffe:打印softmax得分

對於任何給定的測試圖像,如何獲得每個類別的softmax分數並對它們進行一些處理?說算出它們的均值和方差。

我是新手,所以細節會幫助我很多。我能夠訓練模型並使用測試功能獲得預測,但我不確定要編輯哪些文件才能獲得上述結果。

+0

你的python技巧如何? – Shai

+0

我會說至少本科水平。 –

+0

然後使用Python接口與deploy.prototxt,你可以做任何你想要的輸出 – Shai

回答

0

您可以使用Python接口

import caffe 
net = caffe.Net('/path/to/deploy.prototxt', '/path/to/weights.caffemodel', caffe.TEST) 
in_ = read_data(...) # this is up to you to read a sample and convert it to numpy array 
out_ = net.forward(data=in_) # assuming your net expects "data" in blob 

現在,你有你的網在字典out輸出(鍵輸出斑點的名稱)。你可以在幾個例子等循環運行它。

0

我可以嘗試回答你的問題。在部署網假設中,SOFTMAX層是象下面這樣:

layer { 
    name: "prob" 
    type : "Softmax" 
    bottom: "fc6" 
    top: "prob" 
} 

在處理數據與代碼結合@Shai提供Python代碼,您可以通過基於@添加代碼獲取每個類別的概率Shai的代碼:

predicted_prob = net.blobs['prob'].data 

predict_prob將返回一個數組,其中包含所有類別的概率。

例如,如果您只有兩個類別,將是該測試數據屬於一個類別的概率,而predicted_prob[0][1]將是另一個類別的概率。

PS:

如果你不想寫任何額外的python腳本,根據https://github.com/BVLC/caffe/tree/master/examples/mnist 它說這個例子會自動完成每500次迭代的測試。在求解器中定義「500」,例如https://github.com/BVLC/caffe/blob/master/examples/mnist/lenet_solver.prototxt

因此,您需要追溯處理解算器文件的caffe源代碼。我想它應該是https://github.com/BVLC/caffe/blob/master/src/caffe/solver.cpp

我不知道solver.cpp是你需要看的正確的文件。但是在這個文件中,你可以看到它具有測試和計算某些值的功能。如果沒有人能回答你的問題,我希望它能給你一些想法。