一,关于网络融合

分别训练了两个caffemodle,如何使用这两个caffemodel初始化这个大的网络的不同子部分(fine-tuning)。请问该如何操作?
1)caffe -weights 可以跟多个caffemodel,用”,”隔开
2)读取caffemodel并合并两个model数据,可用于初始化两个不同子部分
1.python代码将caffemodel读取
参考链接:https://www.cnblogs.com/denny402/p/5686257.html

import caffe
import numpy as np
root='/home/xxx/'   #根目录
deploy=root + 'mnist/deploy.prototxt'    #deploy文件
caffe_model=root + 'mnist/lenet_iter_9380.caffemodel'   #训练好的 caffemodel
net = caffe.Net(deploy,caffe_model,caffe.TEST)   #加载model和network[(k,v[0].data.shape) for k,v in net.params.items()]  #查看各层参数规模
w1=net.params['Convolution1'][0].data  #提取参数w
b1=net.params['Convolution1'][1].data  #提取参数bnet.forward()   #运行测试[(k,v.data.shape) for k,v in net.blobs.items()]  #查看各层数据规模
fea=net.blobs['InnerProduct1'].data   #提取某层数据(特征)

代码解读:

deploy=root + 'mnist/deploy.prototxt'    #deploy文件
caffe_model=root + 'mnist/lenet_iter_9380.caffemodel'   #训练好的 caffemodel
net = caffe.Net(net_file,caffe_model,caffe.TEST)   #加载model和network
#就把所有的参数和数据都加载到一个net变量里面了,但是net是一个很复杂的object, 想直接显示出来看是不行的。其中:net.params: 保存各层的参数值(w和b)net.blobs: 保存各层的数据值#查看各层名的参数值,v[0].data就是各层的W值,而v[1].data是各层的b值。注意:并不是所有的层都有参数,只有卷积层和全连接层才有。
[(layer_name,v[0].data) for layer_name,v in net.params.items()]
[(layer_name,v[0].data.shape) for layer_name,v in net.params.items()] #查看各层shape
#已知层名查看层参数
w1=net.params['Convolution1'][0].data
b1=net.params['Convolution1'][1].data#运行后,看查看net中层数据(特征)
net.forward()
#查看层数据
[(k,v.data.shape) for k,v in net.blobs.items()]
[(k,v.data) for k,v in net.blobs.items()]
#抽取某一全连接层特征
fea=net.blobs['InnerProduct1'].data

二,关于fune-tune

更多fune-tune详见:
http://blog.csdn.net/zchang81/article/details/73135954
https://www.cnblogs.com/dupuleng/articles/4312129.html
假设现在有一个20类的分类问题,那么最简单的方法就是重新训练一个基于该20类的分类问题。但如果我们已经有一个1000类的模型呢?

我们其实不必大费周张的重新训练一个20类的模型,其实两个模型只有最后一层不一样,即一个的输出为1000维,另一个为20维。那么我们完全可以将1000类模型除最后一层的其余层拿过来使用,然后再使用现有数据对原模型执行fine-tuning操作,这样可以大大提高训练速度。
执行命令:

 ./build/tools/caffe train -solver models/finetune_flickr_style/solver.prototxt -weights models/bvlc_reference_caffenet/caffenet.caffemodel -gpu 0

解读:
使用caffenet.caffemodel模型的时候会将层名相同的参数值作为初始值赋值给相应net.prototxt定义的层的参数,那么就要求层名相同的的层的定义要完全一致,假设输出不一致,那么赋值失败。如果在原模型中没有找到相应的层,该层初始化失败,那么该层的参数初始值与普通训练无异。
因此:
1)freeze指定层参数:在layer里面加上{lr_mult:0}就可以了,比如全连接层:

2)fune-tune指定层参数:将该层名改为与caffemodel中层名字不一样或者新添加该层;

caffe学习系列:网络融合相关推荐

  1. Caffe学习系列(23):如何将别人训练好的model用到自己的数据上

    caffe团队用imagenet图片进行训练,迭代30多万次,训练出来一个model.这个model将图片分为1000类,应该是目前为止最好的图片分类model了. 假设我现在有一些自己的图片想进行分 ...

  2. Caffe学习系列(21):caffe图形化操作工具digits的安装与运行

    经过前面一系列的学习,我们基本上学会了如何在linux下运行caffe程序,也学会了如何用python接口进行数据及参数的可视化. 如果还没有学会的,请自行细细阅读: caffe学习系列:http:/ ...

  3. Caffe学习系列(18): 绘制网络模型

    转载自: Caffe学习系列(18): 绘制网络模型 - denny402 - 博客园 http://www.cnblogs.com/denny402/p/5106764.html python/dr ...

  4. Caffe学习系列(17):模型各层特征和过滤器可视化

    转载自: Caffe学习系列(17):模型各层特征和过滤器可视化 - denny402 - 博客园 http://www.cnblogs.com/denny402/p/5105911.html cif ...

  5. Caffe学习系列(十):腾讯ncnn框架

    Caffe学习系列(十):腾讯ncnn框架 <手把手AI项目>七.MobileNetSSD通过Ncnn前向推理框架在PC端的使用(目标检测 objection detection) 1.n ...

  6. Caffe学习系列(8):solver优化方法

    Caffe学习系列(8):solver优化方法 上文提到,到目前为止,caffe总共提供了六种优化方法: Stochastic Gradient Descent (type: "SGD&qu ...

  7. Caffe学习系列(22):caffe图形化操作工具digits运行实例

    上接:Caffe学习系列(21):caffe图形化操作工具digits的安装与运行 经过前面的操作,我们就把数据准备好了. 一.训练一个model 右击右边Models模块的" Images ...

  8. Caffe学习系列(19): 绘制loss和accuracy曲线

    转载自: Caffe学习系列(19): 绘制loss和accuracy曲线 - denny402 - 博客园 http://www.cnblogs.com/denny402/p/5110204.htm ...

  9. Caffe学习系列(16):各层权值参数可视化

    原文有更新: Caffe学习系列(16):各层权值参数可视化 - denny402 - 博客园 http://www.cnblogs.com/denny402/p/5103425.html 通过前面的 ...

  10. Caffe学习系列(13):数据可视化环境(python接口)配置

    原文有更新: Caffe学习系列(13):数据可视化环境(python接口)配置 - denny402 - 博客园 http://www.cnblogs.com/denny402/p/5088399. ...

最新文章

  1. 个人易遗忘的代码记录(6) 汉字转拼音
  2. 如何在tomcat下应用部署日志_如何在kubernete集群上部署springboot应用
  3. echo count(“abc”); 输出什么?
  4. web.xml.jsf_看一下即将发布的JSF 2.3 Push支持
  5. 使用NoSQL实现实体服务–第4部分:Java EE
  6. 要怎么样做一个合格点的程序猿呢?
  7. Teradata在中国银行业的应用简介
  8. linux下tar压缩使用
  9. ORACLE与.NET类型对应关系(转)
  10. 190712每日一句 生命的韧性
  11. 数据库SQL执行计划
  12. android日记论文摘要,毕业设计(论文)-基于android的日记本的设计与开发.doc
  13. 【RDMA】qp数量和RDMA性能(节选翻译)|连接数
  14. 34. OP-TEE中system call的实现
  15. CAD2018下载AutoCAD2018下载安装教程附软件下载
  16. 优秀网页翻译:关于您的下一个汽车友好型原型
  17. Win7蓝牙被禁用怎么办?
  18. 谈女人 作者:张爱玲
  19. unix_timestamp时间比较引发的问题
  20. 关于MODIS数据说明及简单处理

热门文章

  1. Outlook邮箱注册详解教程
  2. 希尔伯特空间巴拿赫空间空间上的翻译
  3. 不要质疑读者,读者永远比作者聪明
  4. 等效距离计算公式_等效焦距换算(等效焦距的计算公式)
  5. [Joy]冷笑话急转弯
  6. NHibernate]集合类(Collections)映射
  7. html5个人记账网页源代码,蓝色的cms企业记账管理后台模板源码
  8. java简历校园经历_简历校园经历如何编
  9. 联想贺志强:联想专利其实很牛 只是你不知道
  10. Android实战之 上传头像 和仿QQ空间、微博发表文字和图片