caffe 学习记录——solver.prototxt以及ResNet_50_train_val.prototxt数据层/池化层/全连接层参数解析

结果

令batch为32则1000次训练后loss就开始逐渐降到2以下
caffe 学习记录——solver.prototxt以及ResNet_50_train_val.prototxt数据层/池化层/全连接层参数解析_第1张图片

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
         }
     }
 }

你可能感兴趣的:(机器学习)