caffe学习笔记17-find-tuning微调学习
find-tuning:
对已有模型进行find-tuning(softmax层的变动,只需要微调),比如我们现在有一个1000类的分类模型,但目前我们的需求仅是20类,此时我们不需要重新训练一个模型,只需要将最后一层换成20类的softmax层,然后使用已有数据对原模型进行fine-tuning即可。
1.Fine-tuning微调(train + solver.prototxt + caffemodel)
# 微调 CaffeNet 模型的权值以完成风格识别任务(style recognition)
./build/tools/caffe train -solver examples/finetuning_on_flickr_style/solver.prototxt -weights models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel
注:(变动的层fc8需要改名字,不然还是原来的参数,caffenet结构的输出层的类别数一定要大于我训练集的类别数才可以收敛!)
比如原来我把图像类别的label设置成1,2,3,改成0,1,2后,最后全连接层的转出改成3就OK了。
2.style recognition调参策略
1) we will change the name of the last layer form fc8 to fc8_flickr in our prototxt, it will begin training with random weights.
2)decrease base_lr(初始学习率,在train_val.protxt文件值中) and boost the lr_mult(局部学习倍率,conv和fc层才有) on the newly introduced layer(fc8_flickr).
3)set stepsize(solver.prototxt,迭代多少次就下降一次学习率) to a lower value. So the learning rate to Go down faster
4)So in the solver.prototxt,we can find the base_lr is 0.001 from 0.01,and the stepsize is become to 20000 from 100000.(重要)
base_lr: 0.001~0.01 (不改小,loss容易输出non)
lr_mult: w:10,b:20
stepsize: 20000~100000
3.进行微调训练分类时,loss一直是87.3365,可能的原因是:
1.标签的问题:
imagelist中,图像分类的标签label一定要从0开始,
分类层的 num_output 和 标签的值域 不符合:
a. 要知道imagenet是进行1000类的分类任务,我自己的数据是一个二分类,就一定要把最后‘fc8’InnerProduct的分类层的num_output: 2原来是1000,这个设成自己label的类别总数就可以。
b. 但是注意同时要修改train.prototxt和deploy.prototxt两个网络配置文件中的num_output
2.可能是学习率太高了
另外如果是最初的迭代的loss很小,然后突然变成87.3365。如果是这样,可以尝试一下调低学习率,我开始学习率是0.1,后来调成了0.001,反正就是调小,可以多试几次。
caffe学习笔记17-find-tuning微调学习相关推荐
- springmvc学习笔记(17)-上传图片
2019独角兽企业重金招聘Python工程师标准>>> springmvc学习笔记(17)-上传图片 标签: springmvc [TOC] 本文展示如何在springmvc中上传图 ...
- 2020-4-5 深度学习笔记17 - 蒙特卡罗方法 3 ( 马尔可夫链蒙特卡罗方法MCMC-先验分布/后验分布/似然估计,马尔可夫性质)
第十七章 蒙特卡罗方法 中文 英文 2020-4-4 深度学习笔记17 - 蒙特卡罗方法 1 (采样和蒙特卡罗方法-必要性和合理性) 2020-4-4 深度学习笔记17 - 蒙特卡罗方法 2 ( 重要 ...
- 华为HCIA-datacom 学习笔记17——IPv6基础
华为HCIA-datacom 学习笔记17--IPv6基础 IPv6基础 1.ipv4与ipv6 地址长度32bit IPv6:IP地址长度128bit IPv4包头(20byte~60byte) I ...
- 【计算机网络学习笔记17】网络安全、加密技术、“Virtual Private Network”技术
[计算机网络学习笔记17]网络安全.加密技术."Virtual Private Network"技术 一.网络安全概述 1.1 网络系统的安全目标: 1.可用性(Availabil ...
- Python学习笔记17:实操案例十四(模拟高铁售票系统,推算几天后的日期)
Python学习笔记17:实操案例十四(模拟高铁售票系统,推算几天后的日期) 1.模拟高铁售票系统 使用漂亮的表格模块PrettyTable 这个模块需要预先安装,不然直接导入会报错: 安装办法: h ...
- 深度学习笔记(18) 迁移学习
深度学习笔记(18) 迁移学习 1. 迁移学习理念 2. 图像识别的迁移学习 3. 语音识别的迁移学习 4. 使用迁移学习的场合 1. 迁移学习理念 深度学习中最强大的理念之一就是: 神经网络可以从一 ...
- 《Java学习笔记(第8版)》学习指导
<Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...
- 深度学习笔记(1) 深度学习简介
深度学习笔记(1) 深度学习简介 1. 引言 2. 神经网络 3. 兴起 1. 引言 在机器学习的历史上,一共出现了两种定义: 1956 年,开发了西洋跳棋 AI 程序的 Arthur Samuel ...
- 《南溪的目标检测学习笔记》——模型预处理的学习笔记
1 介绍 在目标检测任务中,模型预处理分为两个步骤: 图像预处理:基于图像处理算法 数值预处理:基于机器学习理论 关于图像预处理,请参考<南溪的目标检测学习笔记>--图像预处理的学习笔记 ...
- 深入浅出图神经网络|GNN原理解析☄学习笔记(四)表示学习
深入浅出图神经网络|GNN原理解析☄学习笔记(四)表示学习 文章目录 深入浅出图神经网络|GNN原理解析☄学习笔记(四)表示学习 表示学习 表示学习的意义 离散表示与分布式表示 端到端学习 基于重构损 ...
最新文章
- JAVA中Map集合的使用举例
- Perl 语言入门6-9
- c语言程序设计现代方法(2th)第12章答案(自己胡乱编写的答案,持续更新)
- android10新功能,Android10(Api 29)新特性
- 解决xml中mybatis等的dtd提示问题
- 1177:奇数单增序列
- [转]自己写PHP扩展之创建一个类
- vue具体页面跳转传参方式
- 从数据黑盒到数据白盒,阿里云基础产品首席架构师黄瑞瑞分享背后的故事
- php对接xenserver,XenServer虚拟机管理工具XenCenter安装配置图文教程
- 华为交换机修改radius服务器地址,华为交换机修改radius服务器地址
- uefiboot 文件_UEFI下win系统启动过程及用bcdboot命令如何修复引导启动
- dqo变换_基于dqO变换的电压暂降检测方法研究
- 医用自动配药柜的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
- 2种方式!带你快速实现前端截图
- CRA与craco配置移动端
- 智慧公安大数据人工智能
- 定义一个接口ITest,接口中有3个抽象方法如下。
- python进制转换函数
- 数字时代的“文艺复兴”?起底数字藏品,让人欢喜让人愁
热门文章
- boost::regex模块实现在 cpp 文件中搜索类定义的测试程序
- boost::mp11::mp_split相关用法的测试程序
- boost::hana::fuse用法的测试程序
- boost::graph模块使用 read_graphviz 加载 GraphViz Dot 文本的示例 ,图转换为具有自定义属性的 BGL adjacency_list 图
- boost::coroutine模块实现合并数组的测试程序
- GDCM:MD5的测试程序
- ITK:读写矢量图像
- VTK:Qt之EventQtSlotConnect
- Qt Creator使用ClearCase
- C语言BFS算法的实现(附完整源码)