caffe用別人的model和prototxt測試,batch_size如何選擇?

我下載了別人的prototxt和caffemodel,prototxt的四個dim分別是1,3,256,256.

我在別人模型的兩頭手動添加了下面代碼:

layers {
name: "data"
type: DATA
top: "data"
top: "label"
data_param {
source: "/home/user/caffe-master/examples/test/test_train_lmdb"
batch_size: 1
backend: LMDB
}
transform_param {
mean_file: "/home/user/test/mean.binaryproto"
}
include: { phase: TEST }
}
/*
原本的模型
*/
layers {
name: "accuracy"
type: ACCURACY
bottom: "prob"
bottom: "label"
top: "accuracy"
include: { phase: TEST }
}
layers {
name: "loss"
type: SOFTMAX_LOSS
bottom: "prob"
bottom: "label"
top: "loss"
}

我設置batch_size為1時,準確率最高;設置為400時,準確率下降了10%左右。

我的問題是,2w測試圖片,迭代次數為50時,batch_size等於1是不是意味著我只處理了50張圖片,應該設置為400嗎?還是怎麼設置呢?

同理,如果別人的inputdim限制為1時,是不是要自己設置迭代次數為2w?


謝邀。

我暫時把你的問題理解成你想知道你拿到的模型在你的測試集上的準確率吧...

直接回答你的問題:

batch_size就是你的網路一次正向傳播處理的輸入樣本數量,test_iter就是你的網路遇到TEST這個階段的時候,要進行多少次迭代,所以說,當你進行TEST階段時,會進行test_iter次迭代,也就是test_iter次正向傳播,每次是batch_size個輸入樣本,所以總共會處理test_iter * batch_size個樣本。

同理,如果限制了第一個input_dim(也就是batch_size)為1,那麼你只能將test_iter改成2W了...

註:test_iter就是在你的solver.prototxt裡面的test_iter


同意樓上的說法,batch_size是每次迭代測試的圖片張數


迭代次數為50時,batch_size等於50確實是只測試了50張;在測試時,應該保證batch_size*test_iter&>=測試圖片數,


Caffe默認的迭代次數是50,batchsize=1時可以通過--iterations=20000來修改迭代次數實現測試樣本全覆蓋。


include: { phase: TEST } 即你是用該模型進行測試,其中的batch_size代表的是test_batch_size(相應的還有訓練batch_size),即一次迭代測試使用多少張圖片,
test_batch_size * test_iter(多少次迭代) = 測試圖片總數。
你的問題:
(1)是的 1 * 50 = 50,你只處理了50張圖片,400 * 50 = 20000 或者 1 * 20000 = 20000
(2)根據上面的來即可


Batch Size(批處理大小)對於模型來說是非常重要,在梯度下降方法訓練模型時,Batch Size的大小決定了梯度下降的方向收斂的效果和速率,以及內存的利用率。一般來說:過於小的Batch Size可能導致模型不收斂,隨著Batch Size的增大,模型的處理速度會加快,但同時達到最優精度的epoch數量也隨之增多;因此,Batch Size可能達到時間最優,以及收斂精度最優。所以在選擇時一方面根據計算能力來選擇,一方面需要進行不同的試驗選擇相對較優的Batch Size。

還可以參考程引 - 知乎對於深度機器學習中的batch的大小對學習效果有何影響? - 知乎回答,個人覺得講解非常詳細。


就個人經驗而論 batchsize越大越好1.震蕩明顯減少 2.收斂速度加快 3.同樣學習率下大batch可以收斂到更好的水平。目前沒發現什麼大batch過早陷入局部最優的現象,在我這都是batch越大,精度越高,當然我還在繼續實驗觀察


推薦閱讀:

如何在torch7上增加一個新的層?
萬元深度學習電腦如何配置?
深度學習CNN,用卷積和下採樣,為什麼就有效?全連接的物理意義又是什麼?
caffe 在Ubuntu下如何用已訓練出來的模型測試一張圖片?
有了AWS,不需要自己配GPUs?做深度學習。?

TAG:機器學習 | 深度學習DeepLearning | Caffe深度學習框架 |