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微调学习相关推荐

  1. springmvc学习笔记(17)-上传图片

    2019独角兽企业重金招聘Python工程师标准>>> springmvc学习笔记(17)-上传图片 标签: springmvc [TOC] 本文展示如何在springmvc中上传图 ...

  2. 2020-4-5 深度学习笔记17 - 蒙特卡罗方法 3 ( 马尔可夫链蒙特卡罗方法MCMC-先验分布/后验分布/似然估计,马尔可夫性质)

    第十七章 蒙特卡罗方法 中文 英文 2020-4-4 深度学习笔记17 - 蒙特卡罗方法 1 (采样和蒙特卡罗方法-必要性和合理性) 2020-4-4 深度学习笔记17 - 蒙特卡罗方法 2 ( 重要 ...

  3. 华为HCIA-datacom 学习笔记17——IPv6基础

    华为HCIA-datacom 学习笔记17--IPv6基础 IPv6基础 1.ipv4与ipv6 地址长度32bit IPv6:IP地址长度128bit IPv4包头(20byte~60byte) I ...

  4. 【计算机网络学习笔记17】网络安全、加密技术、“Virtual Private Network”技术

    [计算机网络学习笔记17]网络安全.加密技术."Virtual Private Network"技术 一.网络安全概述 1.1 网络系统的安全目标: 1.可用性(Availabil ...

  5. Python学习笔记17:实操案例十四(模拟高铁售票系统,推算几天后的日期)

    Python学习笔记17:实操案例十四(模拟高铁售票系统,推算几天后的日期) 1.模拟高铁售票系统 使用漂亮的表格模块PrettyTable 这个模块需要预先安装,不然直接导入会报错: 安装办法: h ...

  6. 深度学习笔记(18) 迁移学习

    深度学习笔记(18) 迁移学习 1. 迁移学习理念 2. 图像识别的迁移学习 3. 语音识别的迁移学习 4. 使用迁移学习的场合 1. 迁移学习理念 深度学习中最强大的理念之一就是: 神经网络可以从一 ...

  7. 《Java学习笔记(第8版)》学习指导

    <Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...

  8. 深度学习笔记(1) 深度学习简介

    深度学习笔记(1) 深度学习简介 1. 引言 2. 神经网络 3. 兴起 1. 引言 在机器学习的历史上,一共出现了两种定义: 1956 年,开发了西洋跳棋 AI 程序的 Arthur Samuel ...

  9. 《南溪的目标检测学习笔记》——模型预处理的学习笔记

    1 介绍 在目标检测任务中,模型预处理分为两个步骤: 图像预处理:基于图像处理算法 数值预处理:基于机器学习理论 关于图像预处理,请参考<南溪的目标检测学习笔记>--图像预处理的学习笔记 ...

  10. 深入浅出图神经网络|GNN原理解析☄学习笔记(四)表示学习

    深入浅出图神经网络|GNN原理解析☄学习笔记(四)表示学习 文章目录 深入浅出图神经网络|GNN原理解析☄学习笔记(四)表示学习 表示学习 表示学习的意义 离散表示与分布式表示 端到端学习 基于重构损 ...

最新文章

  1. JAVA中Map集合的使用举例
  2. Perl 语言入门6-9
  3. c语言程序设计现代方法(2th)第12章答案(自己胡乱编写的答案,持续更新)
  4. android10新功能,Android10(Api 29)新特性
  5. 解决xml中mybatis等的dtd提示问题
  6. 1177:奇数单增序列
  7. [转]自己写PHP扩展之创建一个类
  8. vue具体页面跳转传参方式
  9. 从数据黑盒到数据白盒,阿里云基础产品首席架构师黄瑞瑞分享背后的故事
  10. php对接xenserver,XenServer虚拟机管理工具XenCenter安装配置图文教程
  11. 华为交换机修改radius服务器地址,华为交换机修改radius服务器地址
  12. uefiboot 文件_UEFI下win系统启动过程及用bcdboot命令如何修复引导启动
  13. dqo变换_基于dqO变换的电压暂降检测方法研究
  14. 医用自动配药柜的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  15. 2种方式!带你快速实现前端截图
  16. CRA与craco配置移动端
  17. 智慧公安大数据人工智能
  18. 定义一个接口ITest,接口中有3个抽象方法如下。
  19. python进制转换函数
  20. 数字时代的“文艺复兴”?起底数字藏品,让人欢喜让人愁

热门文章

  1. boost::regex模块实现在 cpp 文件中搜索类定义的测试程序
  2. boost::mp11::mp_split相关用法的测试程序
  3. boost::hana::fuse用法的测试程序
  4. boost::graph模块使用 read_graphviz 加载 GraphViz Dot 文本的示例 ,图转换为具有自定义属性的 BGL adjacency_list 图
  5. boost::coroutine模块实现合并数组的测试程序
  6. GDCM:MD5的测试程序
  7. ITK:读写矢量图像
  8. VTK:Qt之EventQtSlotConnect
  9. Qt Creator使用ClearCase
  10. C语言BFS算法的实现(附完整源码)