深度学习Caffe实战笔记(8)模型参数详解(补充)

上一篇博客介绍了如何修改网络结构,修改网络结构的前提是要知道模型的参数都是干什么的,所以想来先去,觉得还是补充一个博客把网络协议的参数做一个简单的说明(还是以LeNet为例子,这个例子太经典了):

name: "LeNet"    #网络名称
layer {           #定义一个层
  name: "mnist"    #层的名称
  type: "Data"     #层类型
  top: "data"      #输出,有两个,data和label
  top: "label"     
  data_param { 
    source: "examples/mnist/mnist-train-leveldb"   #训练数据所在位置
    backend: LEVELDB    #数据类型
    batch_size: 64      #批量数目,表示一次读取64张图
  }
  transform_param {
    scale: 0.00390625   #数据变换使用数据缩放因子
  }
  include: { phase: TRAIN }   #该层只在训练阶段有效
}
layer {        #同上
  name: "mnist"
  type: "Data"
  top: "data"
  top: "label"
  data_param {
    source: "examples/mnist/mnist-test-leveldb"   #测试数据路径
    backend: LEVELDB              #测试数据类型
    batch_size: 100               #一次读入100张测试数据
  } 
  transform_param {
    scale: 0.00390625           #测试数据尺度变换
  }
  include: { phase: TEST }   #该层只在测试阶段有效,既分类阶段有效
}
layer {                    #定义一个卷积层
  name: "conv1"
  type: "Convolution"      #类型决定了层的类型
  bottom: "data"           #该层的输入层
  top: "conv1"             #该层的输出层
  param {
    lr_mult: 1       #权值学习速率倍乘因子,1倍表示保持与全局参数一致
  }
  param {
    lr_mult: 2       #偏置学习速率倍乘因子,是全局参数的2倍
  }
  convolution_param {   #卷积参数
    num_output: 20      #feature map大小,既特征图个数为20
    kernel_size: 5      #卷积核大小
    stride: 1           #卷积输出跳跃间隔,1,表示无跳跃
    weight_filler {     #权值使用xavier填充器
      type: "xavier"
    }
    bias_filler {       #偏置使用常数填充器,默认为0
      type: "constant"
    }
  }
}
layer {              #定义池化层
  name: "pool1"
  type: "Pooling"   #类型
  bottom: "conv1"   #采样层输入
  top: "pool1"      #采样层输出
  pooling_param {    #池化参数
    pool: MAX        #max池化
    kernel_size: 2   #采样窗口大小2*2
    stride: 2        #采样窗口输出跳跃间隔2*2
  }
}
layer {                #非线性层,Insanity方法
  name: "Insanity1"
  type: "Insanity"
  bottom: "pool1"
  top: "pool1"
}
layer {                #卷积层,同上
  name: "conv2"
  type: "Convolution"
  bottom: "pool1"
  top: "conv2"
  param {
    lr_mult: 1
  }
  param {
    lr_mult: 2
  }
  convolution_param {
    num_output: 50
    kernel_size: 5
    stride: 1
    weight_filler {
      type: "xavier"
    }
    bias_filler {
      type: "constant"
    }
  }
}
layer {          #池化层解释同上
  name: "pool2"
  type: "Pooling"
  bottom: "conv2"
  top: "pool2"
  pooling_param {
    pool: MAX
    kernel_size: 2
    stride: 2
  }
}
layer {           #非线性层,用insanity方法
  name: "relu2"
  type: "Insanity"
  bottom: "pool2"
  top: "pool2"
}
layer {              #全连接层
  name: "ip1"
  type: "InnerProduct"   #定义内积层,也称为全连接层
  bottom: "pool2"        #输入
  top: "ip1"             #输出
  param {
    lr_mult: 1
  }
  param {
    lr_mult: 2
  }
  inner_product_param {  
    num_output: 500      #滤波器个数
    weight_filler {      #解释同上
      type: "xavier"
    }
    bias_filler {
      type: "constant"
    }
  }
}
layer {            #非线性层,Insanity方法
  name: "relu3"
  type: "Insanity"
  bottom: "ip1"
  top: "ip1"
}
layer {               #全连接层
  name: "ip2"
  type: "InnerProduct"
  bottom: "ip1"       #输入
  top: "ip2"          #输出
  param {
    lr_mult: 1       #参数学习率,和全局参数保持一致
  }
  param {
    lr_mult: 2      #偏置学习率,是全局学习率的2倍
  }
  inner_product_param {   #全连接参数
    num_output: 10        #输出节点个数
    weight_filler {       #参数滤波类型
      type: "xavier"
    }
    bias_filler {        #偏置滤波类型,常量填充默认0
      type: "constant"
    }
  }
}
layer {                   #分类准确率层,只在testing阶段有效
  name: "accuracy"
  type: "Accuracy"
  bottom: "ip2"          #输入iP2
  bottom: "label"        #对应标签输入
  top: "accuracy"        #输出
  include {
    phase: TEST          #测试有效
  }
}
layer {                  #损失层
  name: "loss"
  type: "SoftmaxWithLoss"   #损失函数类型
  bottom: "ip2"             #输入
  bottom: "label"           #输入
  top: "loss"               #输出
}

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
# The train/test net protocol buffer definition
net: "examples/mnist/Mnist_demo_LeNet.prototxt"   #网络协议,既用哪个网络结构
# test_iter specifies how many forward passes the test should carry out.
# In the case of MNIST, we have test batch size 100 and 100 test iterations,
# covering the full 10,000 testing images.
test_iter: 100                                #预测阶段迭代次数为100,设置预测迭代次数为100可以覆盖全部的10000个测试集
# Carry out testing every 500 training iterations.
test_interval: 500                 #测试频率,训练时,没迭代500次进行一次测试
# The base learning rate, momentum and the weight decay of the network.
base_lr: 0.01              #基础学习率
momentum: 0.9              #基础冲量
#solver_type: ADAGRAD
weight_decay: 0.0005       #基础权衰量
#weight_decay: 0.0005
# The learning rate policy
lr_policy: "inv"         #学习速率的衰减策略
gamma: 0.0001
power: 0.75
# Display every 100 iterations
display: 100            #每100次在屏幕上打印log
# The maximum number of iterations
max_iter: 10000         #最大迭代次数
# snapshot intermediate results
snapshot: 5000          #每5000次打印一次快照,既模型保存
snapshot_prefix: "examples/mnist/lenet"    #打印快照位置
# solver mode: CPU or GPU 
solver_mode: GPU                 #设置CPU或者GPU

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

这里只做简单说明,更深的内容还需要查阅相关paper和基础知识。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值