prototxt 檔案是 caffe 的配置檔案,用於儲存cnn的網路結構和配置資訊。prototxt檔案有三種,分別是deploy.prototxt,train_val.prototxt和solver.prototxt。
solver.prototxt是 caffe的配置檔案,裡面定義了網路訓練時候的各種引數,比如學習率、權重衰減、迭代次數等等。solver.prototxt檔案只在網路進行訓練的時候需要載入,是網路訓練的乙個整體的引數配置檔案。
引數說明:
#網路模型描述檔案,也可以用train_net和test_net來對訓練模型和測試模型分別設定
#train_net: "*********x"
#test_net: "*********x"
net: "e:/caffe/examples/mnist/lenet_train_test.prototxt"
#這個引數要跟test_layer結合起來考慮,在test_layer中乙個batch是100,而總共的測試是10000張
#所以這個引數就是10000/100=100
test_iter: 100
#每迭代500次進行一次測試
test_interval: 500
#學習率
base_lr: 0.01
#動力momentum: 0.9
#type:sgd #優化演算法的選擇。這一行可以省略,因為預設值就是sgd,caffe中一共有6中優化演算法可以選擇
#stochastic gradient descent (type: "sgd"), 在caffe中sgd其實應該是momentum
#adadelta (type: "adadelta"),
#adaptive gradient (type: "adagrad"),
#adam (type: "adam"),
#nesterov』s accelerated gradient (type: "nesterov")
#rmsprop (type: "rmsprop")
#權重衰減項,其實也就是正則化項。作用是防止過擬合
weight_decay: 0.0005
#學習率調整策略
#如果設定為inv,還需要設定乙個power, 返回base_lr * (1 + gamma * iter) ^ (- power),其中iter表示當前的迭代次數
lr_policy: "inv"
gamma: 0.0001
power: 0.75
#每訓練100次螢幕上顯示一次,如果設定為0則不顯示
display: 100
#最大迭代次數
max_iter: 2000
#快照。可以把訓練的model和solver的狀態進行儲存。每迭代5000次儲存一次,如果設定為0則不儲存
snapshot: 5000
snapshot_prefix: "e:/caffe/examples/mnist/models"
#選擇執行模式
solver_mode: gpu
test_iter:表示網路的測試迭代次數。網路一次迭代將乙個batchsize的進行測試,所以為了能將validation集中所有都測試一次,這個引數乘以test的batchsize應該等於validation集中總數量。即test_iter*batchsize=val_num。
test_interval:表示網路迭代多少次進行一次測試。一次迭代即乙個batchsize的通過網路正向傳播和反向傳播的整個過程。比如這裡設定的是224,即網路每迭代224次即對網路的準確率進行一次驗證。一般來說,我們需要將訓練集中所有都跑一編,再對網路的準確率進行測試,整個引數乘以網路data層(train)中batchsize引數應該等於訓練集中總數量。即test_interval * batchsize=train_num。
base_lr:表示網路的基礎學習率。學習率過高可能導致loss無法收斂等等問題。過低的學習率會使網路收斂慢,也有可能導致梯度損失。一般我們設定為0.01。
display: 每多少次顯示在視窗一次。
max_iter: 網路的最大迭代次數。訓練集中的要反覆多次的進行訓練,所以這個引數應該要大一些。
lr_policy: 學習率變化。
gamma: 學習率變化比率。一般不改。
momentum: 學習的引數。一般不改。
weight_decay: 學習的引數。一般不改。
stepsize: 每多少次學習率遞減。這裡是迭代2218次學習率遞減。
snapshot: 每多少次儲存一次學習的結果。即caffemodel。
solver_mode: 設定使用gpu還是cpu進行學習訓練。
net: 網路結構的檔案路徑。
solver_type: 優化演算法的選擇,一共有六種可選:sgd、adadelta、adagrad、adam、nesterov和rmsprop。預設為sgd。
deploy.prototxt 檔案和 train_val.prototxt 檔案是 caffe 的網路結構檔案。train_val.prototx是訓練時候的網路結構,deploy.prototxt用於發布(即測試時候的網路結構)。這兩個檔案中內容基本一致,但是存在一些細微區別:1. 在train_val.prototx中網路結構的data層有兩種,分別為train和test。顧名思義,train是網路訓練時後的資料結構,test是網路做驗證時候的資料結構。一般來說train中的batchsize比test中的要大一些。2.在train_val.prototx中的卷積層(convolution)中存在學習率和權重衰減的引數,而deploy.prototxt檔案中則沒有這些引數。
由於train_val.prototx包含了deploy.prototxt檔案中所有的引數定義,所以下面以train_val.prototx檔案為例,詳細說明每個引數的意義。以經典的alexnet網路為例:
data層:
layer
transform_param
data_param
}
convolution層:
layer
param
convolution_param # 整個引數是表示使用高斯方法初始化濾波器引數。這裡使用均值為0,方差為0.01的高斯核
bias_filler # 整個引數表示使用 constant 方法初始化偏置,即初始偏置為0
}}
在caffe訓練完網路之後,會生成兩個檔案乙個caffemodel和solberstate,caffemodel是各層的引數,也就是訓練之後的網路模型最重要的檔案,而 solverstate則是快照,就是可以通過該檔案繼續進行迭代。這兩個檔案的位置在訓練網路的 solver.prototxt檔案定義,這裡面的 snapshot_prefix 欄位裡寫了檔案生成的位置。 Caffe神經網路結構彙總
自2012年alexnet贏得了imagenet競賽以來,深度學習 神經網路 得到了飛速發展,產生了許多的神經網路結構,本文主要總結caffe中使用的神經網路 分類的神經網路 本文的神經網路作者都使用caffe訓練過,並在kaggle的intel癌症 比賽中進行了測試與使用 top 8 alexne...
caffe學習筆記 網路結構分析
最近的事情比較多,忙過之後終於有時間整理一下思緒了。在做課題之餘,把caffe框架的網路結構好好梳理了一番,希望可以幫助到有需要的人。test iter 100 階段迭代次數為100,設定 迭代次數為100可以覆蓋全部的10000個測試集 carry out testing every 500 tr...
關於六層網路結構的協議詳解
一 應用層 1 http 超文字傳輸協議 http,hypertext transfer protocol 是網際網路上應用最為廣泛的一種網路協議。所有的www檔案都必須遵守這個標準。設計http最初的目的是為了提供一種發布和接收html頁面的方法。1960年美國人ted nelson構思了一種通過...