caffe prototxt文件 參數配置介紹

caffe 參數配置介紹

solver.prototxt 參數配置介紹

net: "models/bvlc_alexnet/train_val.prototxt" 
test_iter: 1000       # 
test_interval: 1000   # 
base_lr: 0.01         # 開始的學習率
lr_policy: "step"     # 學習率的drop是以gamma在每一次迭代中
gamma: 0.1
stepsize: 100000      # 每stepsize的迭代降低學習率:乘以gamma
display: 20           # 沒display次打印顯示loss
max_iter: 450000      # train 最大迭代max_iter 
momentum: 0.9         #
weight_decay: 0.0005  #
snapshot: 10000       # 沒迭代snapshot次,保存一次快照
snapshot_prefix:   "models/bvlc_reference_caffenet/caffenet_train"
solver_mode: GPU      # 使用的模式是GPU 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • test_iter 
    測試的時候,需要迭代的次數,即test_iter* batchsize(測試集的)=測試集的大小,測試集的 batchsize可以在prototx文件裏設置。

  • test_interval 
    訓練的時候,每迭代test_interval次就進行一次測試。

  • momentum 
    靈感來自於牛頓第一定律,基本思路是爲尋優加入了“慣性”的影響,這樣一來,當誤差曲面中存在平坦區的時候,SGD可以更快的速度學習。 

    wimwiηEwi

train_val.prototxt

layer { # 數據層
    name: "data"
    type: "Data"
    top: "data"
    top: "label"
    include {
        phase: TRAIN # 表明這是在訓練階段才包括進去
    }
    transform_param { # 對數據進行預處理
        mirror: true # 是否做鏡像
        crop_size: 227
        # 減去均值文件
        mean_file: "data/ilsvrc12/imagenet_mean.binaryproto"
    }
    data_param { # 設定數據的來源
        source: "examples/imagenet/ilsvrc12_train_lmdb"
        batch_size: 256
        backend: LMDB
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
layer {
    name: "data"
    type: "Data"
    top: "data"
    top: "label"
    include {
        phase: TEST # 測試階段
    }
    transform_param {
        mirror: false # 是否做鏡像
        crop_size: 227
        # 減去均值文件
        mean_file: "data/ilsvrc12/imagenet_mean.binaryproto"
    }
    data_param {
        source: "examples/imagenet/ilsvrc12_val_lmdb"
        batch_size: 50
        backend: LMDB
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • lr_mult 
    學習率,但是最終的學習率需要乘以 solver.prototxt 配置文件中的 base_lr .

    如果有兩個 lr_mult, 則第一個表示 weight 的學習率,第二個表示 bias 的學習率 
    一般 bias 的學習率是 weight 學習率的2倍’

  • decay_mult 
    權值衰減,爲了避免模型的over-fitting,需要對cost function加入規範項。 

    wiwiηEwiηλwi

  • num_output 
    卷積核(filter)的個數

  • kernel_size 
    卷積核的大小。

    如果卷積核的長和寬不等,需要用 kernel_h 和 kernel_w 分別設定

  • stride 
    卷積核的步長,默認爲1。也可以用stride_h和stride_w來設置。

  • pad 
    擴充邊緣,默認爲0,不擴充。

    擴充的時候是左右、上下對稱的,比如卷積核的大小爲5*5,那麼pad設置爲2,則四個邊緣都擴充2個像素,即寬度和高度都擴充了4個像素,這樣卷積運算之後的特徵圖就不會變小。 
    也可以通過pad_h和pad_w來分別設定。

  • weight_filler 
    權值初始化。 默認爲“constant”,值全爲0. 
    很多時候我們用”xavier”算法來進行初始化,也可以設置爲”gaussian”

weight_filler {
    type: "gaussian"
    std: 0.01
}
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4
  • bias_filler

偏置項的初始化。一般設置爲”constant”, 值全爲0。

bias_filler {
    type: "constant"
    value: 0
}
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4
  • bias_term

    是否開啓偏置項,默認爲true, 開啓

  • group 
    分組,默認爲1組。如果大於1,我們限制卷積的連接操作在一個子集內。 
    卷積分組可以減少網絡的參數,至於是否還有其他的作用就不清楚了。

    每個input是需要和每一個kernel都進行連接的,但是由於分組的原因其只是與部分的kernel進行連接的 
    如: 我們根據圖像的通道來分組,那麼第i個輸出分組只能與第i個輸入分組進行連接。

  • pool 
    池化方法,默認爲MAX。目前可用的方法有 MAX, AVE, 或 STOCHASTIC

  • dropout_ratio 
    丟棄數據的概率

謝謝作者分享,原文鏈接:   http://blog.csdn.net/cyh_24/article/details/51537709


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