solver.prototxt参数说明(三)
http://www.mamicode.com/info-detail-1368127.html
solver.prototxt
net: "models/bvlc_alexnet/train_val.prototxt" test_iter: 1000 # test_interval: 1000 # base_lr: 0.01 # 開(kāi)始的學(xué)習(xí)率 lr_policy: "step" # 學(xué)習(xí)率的drop是以gamma在每一次迭代中 gamma: 0.1 stepsize: 100000 # 每stepsize的迭代降低學(xué)習(xí)率:乘以gamma display: 20 # 沒(méi)display次打印顯示loss max_iter: 450000 # train 最大迭代max_iter momentum: 0.9 # weight_decay: 0.0005 # snapshot: 10000 # 沒(méi)迭代snapshot次,保存一次快照 snapshot_prefix: "models/bvlc_reference_caffenet/caffenet_train" solver_mode: GPU # 使用的模式是GPUtest_iter?
在測(cè)試的時(shí)候,需要迭代的次數(shù),即test_iter* batchsize(測(cè)試集的)=測(cè)試集的大小,測(cè)試集的 batchsize可以在prototx文件里設(shè)置。test_interval?
訓(xùn)練的時(shí)候,每迭代test_interval次就進(jìn)行一次測(cè)試。momentum?
靈感來(lái)自于牛頓第一定律,基本思路是為尋優(yōu)加入了“慣性”的影響,這樣一來(lái),當(dāng)誤差曲面中存在平坦區(qū)的時(shí)候,SGD可以更快的速度學(xué)習(xí)。?
train_val.prototxt
layer { # 數(shù)據(jù)層name: "data"type: "Data"top: "data"top: "label"include {phase: TRAIN # 表明這是在訓(xùn)練階段才包括進(jìn)去}transform_param { # 對(duì)數(shù)據(jù)進(jìn)行預(yù)處理mirror: true # 是否做鏡像crop_size: 227# 減去均值文件mean_file: "data/ilsvrc12/imagenet_mean.binaryproto"}data_param { # 設(shè)定數(shù)據(jù)的來(lái)源source: "examples/imagenet/ilsvrc12_train_lmdb"batch_size: 256backend: LMDB} } layer {name: "data"type: "Data"top: "data"top: "label"include {phase: TEST # 測(cè)試階段}transform_param {mirror: false # 是否做鏡像crop_size: 227# 減去均值文件mean_file: "data/ilsvrc12/imagenet_mean.binaryproto"}data_param {source: "examples/imagenet/ilsvrc12_val_lmdb"batch_size: 50backend: LMDB} }lr_mult?
學(xué)習(xí)率,但是最終的學(xué)習(xí)率需要乘以 solver.prototxt 配置文件中的 base_lr .如果有兩個(gè) lr_mult, 則第一個(gè)表示 weight 的學(xué)習(xí)率,第二個(gè)表示 bias 的學(xué)習(xí)率?
一般 bias 的學(xué)習(xí)率是 weight 學(xué)習(xí)率的2倍’decay_mult?
權(quán)值衰減,為了避免模型的over-fitting,需要對(duì)cost function加入規(guī)范項(xiàng)。?num_output?
卷積核(filter)的個(gè)數(shù)kernel_size?
卷積核的大小。如果卷積核的長(zhǎng)和寬不等,需要用 kernel_h 和 kernel_w 分別設(shè)定
stride?
卷積核的步長(zhǎng),默認(rèn)為1。也可以用stride_h和stride_w來(lái)設(shè)置。pad?
擴(kuò)充邊緣,默認(rèn)為0,不擴(kuò)充。擴(kuò)充的時(shí)候是左右、上下對(duì)稱(chēng)的,比如卷積核的大小為5*5,那么pad設(shè)置為2,則四個(gè)邊緣都擴(kuò)充2個(gè)像素,即寬度和高度都擴(kuò)充了4個(gè)像素,這樣卷積運(yùn)算之后的特征圖就不會(huì)變小。?
也可以通過(guò)pad_h和pad_w來(lái)分別設(shè)定。weight_filler?
權(quán)值初始化。 默認(rèn)為“constant”,值全為0.?
很多時(shí)候我們用”xavier”算法來(lái)進(jìn)行初始化,也可以設(shè)置為”gaussian”
- bias_filler
偏置項(xiàng)的初始化。一般設(shè)置為”constant”, 值全為0。
bias_filler {type: "constant"value: 0 }bias_term
是否開(kāi)啟偏置項(xiàng),默認(rèn)為true, 開(kāi)啟
group?
分組,默認(rèn)為1組。如果大于1,我們限制卷積的連接操作在一個(gè)子集內(nèi)。?
卷積分組可以減少網(wǎng)絡(luò)的參數(shù),至于是否還有其他的作用就不清楚了。每個(gè)input是需要和每一個(gè)kernel都進(jìn)行連接的,但是由于分組的原因其只是與部分的kernel進(jìn)行連接的?
如: 我們根據(jù)圖像的通道來(lái)分組,那么第i個(gè)輸出分組只能與第i個(gè)輸入分組進(jìn)行連接。pool?
池化方法,默認(rèn)為MAX。目前可用的方法有 MAX, AVE, 或?STOCHASTICdropout_ratio?
丟棄數(shù)據(jù)的概率
總結(jié)
以上是生活随笔為你收集整理的solver.prototxt参数说明(三)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: solver.prototxt参数说明(
- 下一篇: 如何绘制caffe网络训练曲线