首先明确预训练好的模型和自己的网络结构是有差异的,预训练模型的参数如何跟自己的网络匹配的呢:

参考官网教程:http://caffe.berkeleyvision.org/gathered/examples/finetune_flickr_style.html

--If we provide the weights argument to the caffe train command, the pretrained weights will be loaded into our model, matching layers by name.

意思就是预训练的模型根据你当前网络的layer 名进行匹配参数,加入预训练原始网络的第一个卷积层name是conv1,而你自己的第一个卷积层网络name是Convolution1,那么这个层在预网络中的参数就不会被匹配调用,这就没有实现我们finetune的目的!

因为没有匹配上的layer会这样处理:Since there is no layer named that in the bvlc_reference_caffenet, that layer will begin training with random weights.也就是随机初始化

原来网络结构中的全连接层fc8, 需要改一下名字,如我的改成"re-fc8". 因为我们做的是微调。微调的意思就是先在别的数据集上进行训练,把训练好的权值,作为我们现在数据集的权值初始化,就不再需要随机初始化了。现在的数据和训练时的数据不一致,因此有些层数的设置就会有点区别。比如这个例子中,用来训练模型的数据集是imagenet,分为1000类,而我们的数据集就只有5类,因此在fc8这层上的num_output就会有区别,因此在这一层上就不能用人家的权值了,就需要把这层的名字改得和原来的网络结构不一样。

因此我们在finetune的时候一般同时使用模型和模型对应的训练网络结构,保证所有参数被正确加载和调用

常见的fintune基础思路:We will also decrease the overall learning rate base_lr in the solver prototxt, but boost the lr_multon the newly introduced layer. The idea is to have the rest of the model change very slowly with new data, but let the new layer learn fast. Additionally, we set stepsize in the solver to a lower value than if we were training from scratch, since we’re virtually far along in training and therefore want the learning rate to go down faster. Note that we could also entirely prevent fine-tuning of all layers other than fc8_flickr by setting their lr_mult to 0.

常用pre-trained模型下载地址:https://github.com/BVLC/caffe/wiki/Model-Zoo

更多可参考:http://www.cnblogs.com/denny402/p/5137534.html

一些实际finetune的建议:http://blog.csdn.net/nongfu_spring/article/details/51514040

转载于:https://www.cnblogs.com/deeeplearnxl/p/6233672.html

caffe使用预训练的模型进行finetune相关推荐

  1. keras: 用预训练的模型提取特征

    keras提供了VGG19在ImageNet上的预训练权重模型文件,其他可用的模型还有VGG16.Xception.ResNet50.InceptionV3 4个. VGG19在keras中的定义: ...

  2. 超50篇论文串联起从VQA到多模态预训练大模型的前世今生—Part 1

    文章简介 本文从视觉问答(VQA)任务出发,讲述了 2015 年任务的定义开始,接踵出现的各种多模态技术.从无注意力机制的深度学习模型,发展到天然适合注意力机制的多模态场景的模型,再到基于 Trans ...

  3. 中文预训练ALBERT模型来了:小模型登顶GLUE,Base版模型小10倍、速度快1倍

    (图片由AI科技大本营付费下载自视觉中国) 作者 | 徐亮(实在智能算法专家)  来源 | AINLP(ID:nlpjob) 谷歌ALBERT论文刚刚出炉一周,中文预训练ALBERT模型来了,感兴趣的 ...

  4. 超越Facebook、谷歌、微软,百度发布全球首个百亿参数对话预训练生成模型PLATO-XL...

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 来自:机器之心 和 AI 进行无障碍的对话,是什么样的体验?你或许能够在这篇文章里找到 ...

  5. 使用torchvision.models.inception_v3(pretrained=True)加载预训练的模型每次都特别慢

    欢迎大家关注笔者,你的关注是我持续更博的最大动力 原创文章,转载告知,盗版必究 使用torchvision.models.inception_v3(pretrained=True)加载预训练的模型每次 ...

  6. bert中文预训练模型_HFL中文预训练系列模型已接入Transformers平台

    哈工大讯飞联合实验室(HFL)在前期陆续发布了多个中文预训练模型,目前已成为最受欢迎的中文预训练资源之一.为了进一步方便广大用户的使用,借助Transformers平台可以更加便捷地调用已发布的中文预 ...

  7. 紫东太初:自动化所开源图-文-音三模态的预训练大模型

    近日,中科院自动化所研发并开源了全球首个图文音(视觉-文本-语音)三模态预训练模型,兼具跨模态理解和生成能力,具有了在无监督情况下多任务联合学习.并快速迁移到不同领域数据的强大能力.自动化所构建了具有 ...

  8. 预训练生成模型:结合VAE与BERT/GPT-2提高文本生成效果

    论文标题: Optimus: Organizing Sentences via Pre-trained Modeling of a Latent Space 论文作者: Chunyuan Li, Xi ...

  9. python怎么使用预训练的模型_Keras使用ImageNet上预训练的模型方式

    我就废话不多说了,大家还是直接看代码吧! import keras import numpy as np from keras.applications import vgg16, inception ...

最新文章

  1. [翻译] AnimatedTransitionGallery
  2. bootstrap5
  3. 网易云api及 asrsea 加密参数文档
  4. 微信小程序nginx+uwsgi+django配置的域名问题
  5. rocketmq4.x快速入门指南
  6. Oracle使用Shell脚本导出Excel表格
  7. 设置某一个行列的颜色和写保护属性
  8. 国内首款 FeliCa协议NFC读卡器芯片 FSV9512 国产替代NXP PN512 同时可兼容 A卡 B卡 每月KK级出货量
  9. android输入框边框距离,如何更改Android对话框边距(到屏幕边缘的距离)?
  10. 移动云5G消息平台技术架构
  11. 服务器自定义npc音乐,Custom NPC 自定义NPC模组自定义音乐添加教程
  12. 转一次排障经历以供学习
  13. 个人信息保护法相关法律法规学习和梳理
  14. b和B的区别?大B与小b的区别(Bps与bps)以及b、B、KB、MB、TB、PB、EB的换算
  15. 物 理 学 简 介(一)
  16. 吾家有女初长成,愿你健康快乐成长!
  17. 前端开发免费资源分享
  18. 用meshio进行模型格式转换(obj.stl.vtk.vtu.svg……)
  19. 西门子PLC协议转换CIP协议,实现与罗克韦尔/AB、欧姆龙PLC之间通讯
  20. 高中数学数列求前项公式解题技巧(附视频)

热门文章

  1. 2017.8.15 数据库
  2. 女生可不可以进入IT行业做Linux运维工程师?
  3. 学习simple.data之基础篇
  4. 写给嵌入式方向的某些同学 - 基于WINCE系统的程序开发[不完整版]
  5. 提取特征点的方式,opencv2.x和opencv3.x的区别
  6. python yield理解_Python3 中 Yield 理解与使用
  7. (8)VTK 鼠标左右键控制模型旋转
  8. java biz层创建代码_BIZ层调试方法
  9. 升级总代分享思路_旧笔记本光驱换SSD,升级内存,改造散热还能再战5年
  10. python方法_详细解读Python中的__init__()方法