结果
令batch为32则1000次训练后loss就开始逐渐降到2以下
solver_50.prototxt文件参数解析
# 所使用的训练以及测试网络模型文件
net: "ResNet_50_train_val.prototxt"
# 处理batchsize*itersize张图片后,才调用一次ApplyUpdate函数根据学习率、method(SGD、AdaSGD等)进行梯度下降
#iter_size: 2
#一般与test layer的 batchsize相联系,表示一轮测试进行1000次迭代,每次迭代测试batchsize张图片
test_iter: 1000
# 表示训练600次才进行一轮测试
test_interval: 600
# 在第一次迭代前,不计算初始的loss
test_initialization: false
# 最大迭代次数。这个数设置太小,会导致没有收敛,精确度很低。设置太大,会导致震荡,浪费时间。
max_iter: 2000
# 每训练10次,在屏幕上显示一次信息。如果设置为0,则不显示。
display: 10
#优化算法,默认是SGD,共有6种算法提供
#type: SGD
# 基础学习率
base_lr: 0.05
# 学习率的调整策略
lr_policy: "multistep"
#stepvalue, gamma与multistep更新策略相关
stepvalue: 150000
stepvalue: 300000
gamma: 0.1
# 上一次梯度更新的权重
momentum: 0.9
# 权重衰减项,防止过拟合的一个参数。
weight_decay: 0.0001
# 训练600次后进行保存model和solver状态快照,默认为0,不保存,保存的路径前缀为“resnet”
snapshot: 600
snapshot_prefix: "resnet"
# 选择调用 CPU,默认是 GPU
solver_mode: CPU
ResNet_50_train_val.prototx
数据层参数解析
layer {
#层的名称
name: "data"
#根据数据的来源不同,数据层的类型也不同
type: "ImageData"
#如果只有top没有bottom,则此层只有输出,没有输入。反之亦然
top: "data"
top: "label"
#如果没有include参数,则表示该层既在训练模型中,又在测试模型中。
include {
phase: TRAIN
}
#数据的预处理
transform_param {
#开启镜像,随机水平翻转
mirror: true
#剪裁一个 32*32的图块,在训练阶段随机剪裁,在测试阶段从中间裁剪
crop_size: 32
#减去三个通道对应的均值,默认是BGR顺序。如果只配置一次,则该值被所有通道使用(各通道都减该值);如果针对每个通道要配置不同的均值,需要重复配置n次(n表示通道数)。mean_value可用mean_file代替但不能同时设置。
mean_value: 104
mean_value: 117
mean_value: 123
}
image_data_param {
#图像文件的根目录
root_folder: "/HOME/sysu_sc_ll/WORKSPACE/wenyp/0314/cifar-10/train/Img/"
#imagedata类型的层必须设置,一个文本文件的名字,每一行给定一个图片文件的名称和对应标签
source: "/HOME/sysu_sc_ll/WORKSPACE/wenyp/0314/cifar-10/train/label.txt"
#imagedata类型的层必须设置,每一次处理的样本图片个数,默认为1
batch_size: 32
#将图片resize为36*36,默认为0,表示忽略
new_height:36
new_width:36
# 图片是彩色还是灰度图
is_color: true
#每个epoch后随机打乱数据顺序,默认为false,表示忽略
shuffle: true
}
}
layer {
name: "data"
type: "ImageData"
top: "data"
top: "label"
include {
phase: TEST
}
transform_param {
mirror: false
crop_size: 32
mean_value: 104
mean_value: 117
mean_value: 123
}
image_data_param {
root_folder: "/HOME/sysu_sc_ll/WORKSPACE/wenyp/0314/cifar-10/test/Img/"
source: "/HOME/sysu_sc_ll/WORKSPACE/wenyp/0314/cifar-10/test/label.txt"
batch_size: 1
new_height: 36
new_width: 36
is_color: true
shuffle: false
}
}
池化层参数解析
layer {
bottom: "res5c"
top: "pool5"
name: "pool5"
type: "Pooling"
pooling_param {
kernel_size: 1 # 必需,滤波器大小为1*1
stride: 1 # 移动步长为1
pool: AVE # 池化方式为平均池化
}
}
全连接层参数解析
layer {
bottom: "pool5"
top: "fc10"
name: "fc10"
type: "InnerProduct"
# 权重(weights)的学习速率因子和衰减因子
param {
lr_mult: 1
decay_mult: 1
}
# 偏置项(biases)的学习速率因子和衰减因子
param {
lr_mult: 2
decay_mult: 1
}
inner_product_param {
num_output: 10 # 必需,1000个滤波器(filters)
weight_filler {
type: "xavier" # 使用xavier算法初始化权值
}
bias_filler {
type: "constant" # 初始化偏置项(bias)为0,默认为0
value: 0
}
}
}