Caffe中每一層的引數配置
阿新 • • 發佈:2019-01-04
資料層(Data)
layers { name: "data" type: DATA top: "data" top: "label" data_param { source: "../data/ImageNet/imagenet-train" #資料存放位置 batch_size: 128 #一次批處理的大小,視記憶體大小而定。四維陣列N*C*H*W中的N backend: LMDB #資料庫型別,預設為leveldb } include: { phase: TRAIN } #如果加了這一行的話表示是在訓練過程中使用該層,可將TRAIN替換為TEST }
卷積層(Convolution)
關於weight_filler和bias_filler的幾種設定方式:layer { name: "conv" type: "Convolution" bottom: "data" top: "conv" param { lr_mult: 1 #權重的學習率 該層lr=lr_mult*base_lr decay_mult: 1 #權重的衰減值 } param { lr_mult: 2 #偏置項的學習率 decay_mult: 0 #偏置項的衰減值 } convolution_param { num_output: 96 #該層輸出的filter的個數。四維陣列N*C*H*W中的W kernel_size: 11 #卷積核大小11*11。可設定長kernel_h與寬kernel_w stride: 4 #步長,也就是卷積核滑動的距離 weight_filler { #卷積核初始化方式 type: "gaussian" #高斯分佈 std: 0.01 #標準差為0.01 } bias_filler { #偏置項初始化方式 type: "constant" #連續分佈 value: 0 } } }
TYPE | PARAM | EXPLAIN |
Constant | Value | 以常量初始化,初始化值為[Value] |
Gaussian | std,mean | 以高斯分佈方式初始化,均值為[mean],標準差為[std] |
uniform | min,max | 均勻分佈,[min,max] |
xavier | scale | 均勻分佈,[-scale,scale],scale=sqrt(3/K*H*W) |
RELU
Relu標準函式:f(x)=max(0,x)layer { name: "relu" type: "ReLU" bottom: "conv" top: "conv" }
LRN
layer {
name: "norm"
type: "LRN"
bottom: "conv"
top: "norm"
lrn_param {
local_size: 5#對於cross channel LRN,表示需要求和的channel的數量;對於within channel LRN,表示需要求和的空間區域的邊長。預設為5
alpha: 0.0001 #LRN公式中的引數alpha
beta: 0.75 #LRN公式中的引數beta
}
}
POOLING
layer {
name: "pool"
type: "Pooling"
bottom: "norm1"
top: "pool1"
pooling_param {
pool: MAX #有三種池化方式:MAX,AVG,STOCHASTIC
kernel_size: 3 #卷積核大小;可設定長kernel_h與寬kernel_w
stride: 2 #步長
}
}
INNERPRODUCT
layer {
name: "fc7"
type: "InnerProduct"
bottom: "fc6"
top: "fc7"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
inner_product_param {
num_output: 4096
weight_filler {
type: "gaussian"
std: 0.005
}
bias_filler {
type: "constant"
value: 0.1
}
}
}
ACCURACY
layer {
name: "accuracy"
type: "Accuracy"
bottom: "fc8"
bottom: "label"
top: "accuracy"
include {phase: TEST}
}
可新增accuracy_param {
top_k: 5
}
預設為top_1,新增該項後,選擇測試top_k準確率。SOFTMAX_LOSS
layers {
name: "loss"
type: SOFTMAX_LOSS
bottom: "pool3"
bottom: "label"
top: "loss"
include: { phase: TRAIN }
}
在計算softmax_loss前,將pool3層預設經過了一次softmax計算。