Caffe網路結構層引數詳解

2021-09-12 15:00:34 字數 3387 閱讀 8032

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構思了一種通過...