caffe詳解之solver文件配置


從零開始,一步一步學習caffe的使用,期間貫穿深度學習和調參的相關知識!

 

solver配置說明

通過前面的講解我們瞭解了不同的層,作爲我們設計深度神經網絡的積木,梳理了caffe中給定的損失函數(當然我們也可以針對自己的問題設計),並進一步對優化算法進行了細緻的總結,接下來我們將caffe中需要配置的solver.prototxt中涉及到的參數進行詳細剖析。
我們首先看一看lenet中定義的solver配置文件。

net: "examples/mnist/lenet_train_test.prototxt"  #網絡位置

test_iter: 100 #設置測試迭代次數
test_interval: 500 #測試間隔。也就是每訓練500次,才進行一次測試。
base_lr: 0.01 #用於設置基礎學習率
momentum: 0.9 #動量大小
type: SGD     #SGD優化算法
weight_decay: 0.0005  # 權重衰減項(正則化項),防止過擬合的一個參數λ
lr_policy: "inv" #學習率調整策略
gamma: 0.0001
power: 0.75
display: 100
max_iter: 20000  # 最大迭代次數。這個數設置太小,會導致沒有收斂,精確度很低。設置太大,會導致震盪,浪費時間。
snapshot: 5000
snapshot_prefix: "examples/mnist/lenet"
solver_mode: CPU

設置網絡定義文件位置

net: "examples/mnist/lenet_train_test.prototxt"

設置網絡定義文件位置,也可以分別設定traintest如下所示:

train_net: "examples/hdf5_classification/logreg_auto_train.prototxt"
test_net: "examples/hdf5_classification/logreg_auto_test.prototxt"

設置測試迭代次數

test_iter: 100

這個要與test layer中的batch_size結合起來理解。mnist數據中測試樣本總數爲10000,一次性執行全部數據效率很低,因此我們將測試數據分成幾個批次(batch_num)來執行,每個批次的數量就是batch_size。假設我們設置batch_size爲100,則需要迭代100次才能將10000個數據全部執行完。因此test_iter設置爲100。執行完一次全部數據,稱之爲一個epoch
總結

  • 當一個完整的數據集通過了神經網絡一次並且返回了一次,這個過程稱爲一個epoch。一般情況下在迭代的過程中需要使用多次epoch防止模型欠擬合。

  • 在不能將數據一次性通過神經網絡的時候,就需要將數據集分成幾個batch(Number of batches,簡記爲batch_num)。

  • 一個 batch 中的樣本總數(Batch Size,簡記爲batch_size)

  • Iteration是 batch 需要完成一個 epoch 的次數。記住:在一個 epoch 中,batch_num 和Iteration是相等的。比如對於一個有 2000 個訓練樣本的數據集。將 2000 個樣本分成4個大小爲 500 的 batch_size,那麼完成一個 epoch 需要 4 個 iteration,對應的batch_num也是4。

設置測試間隔

test_interval: 500

測試間隔。也就是每訓練500次,才進行一次測試。

設置優化算法類型

type: SGD

常見的優化算法包括:SGD、Adagrad、RMSProp、AdaDelta、Adam等。

設置動量大小

momentum :0.9


momentum指的是設置上面公式r的值,一般設置爲0.9

 

設置權重衰減係數

weight_decay: 0.0005

 

設置顯示週期

display: 100

每訓練100次,在屏幕上顯示一次。如果設置爲0,則不顯示。

設置最大迭代次數

max_iter: 20000

最大迭代次數,到達20000次就停止了。

設置快照

snapshot: 5000
snapshot_prefix: "examples/mnist/lenet"

快照。將訓練出來的modelsolver狀態進行保存,snapshot用於設置訓練多少次後進行保存,默認爲0,不保存。snapshot_prefix設置保存路徑。

還可以設置snapshot_diff,是否保存梯度值,默認爲false,不保存。

也可以設置snapshot_format,保存的類型。有兩種選擇:HDF5BINARYPROTO,默認爲BINARYPROTO

設置運行模式

solver_mode: CPU

設置運行模式。默認爲GPU,如果你沒有GPU,則需要改成CPU,否則會出錯。

設置學習率調整策略

base_lr: 0.01    # base_lr用於設置基礎學習率
lr_policy: "inv" # 學習率調整策略
gamma: 0.0001
power: 0.75

學習率調整的策略還包括

 

參考

Caffe學習系列(7):solver及其配置


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章