文件 | 实现 |
---|---|
solver.prototxt | 优化 |
train_val.prototxt | 训练、测试 |
deploy.prototxt | 预测 |
一、solver.prototxt
优化(参数更新)
优化与网络模型分离,所以需要两个文件 solver.prototxt 与 train_val.prototxt,在solver.prototxt 中调用网络模型 train_val.prototxt
PS:我突然有些理解optimization的意思了,就是减少error,即通过调整权重来减小loss,即预测值与实际值的差距
1.学习率调整策略
lr_policy
type | 参数设置 |
---|---|
fixed | 保持base_lr不变 |
step | 如果设置为step,则还需要设置一个stepsize, 返回 base_lr * gamma ^ (floor(iter / stepsize)),其中iter表示当前的迭代次数 |
exp | 返回base_lr *gamma^iter,iter为当前迭代次数 |
inv | 如果设置为inv,还需要设置一个power, 返回base_lr (1 + gamma iter) ^ (- power) |
multistep | 如果设置为multistep,则还需要设置一个stepvalue。这个参数和step很相似,step是均匀等间隔变化,而multistep则是根据stepvalue值变化 |
poly | 学习率进行多项式误差, 返回 base_lr (1 - iter/max_iter) ^ (power) |
sigmoid | 学习率进行sigmod衰减,返回 base_lr ( 1/(1 + exp(-gamma * (iter - stepsize)))) |
二、train_val.prototxt
训练和验证阶段
定义训练集和验证集的来源
训练阶段,定义损失函数
验证阶段,测试集的准确度
三、deploy.prototxt
预测阶段
通过分类器,输出各类的概率