caffe中 对caffemodel进行结构修改并保存

问题综述:利用matlab,在编译matcaffe的前提下,对已有的caffemodel进行结构修改,例如,删除一些层等

问题描述:在深度学习过程中,自己的目标任务往往需要基于物体识别等等其他任务的基础上,加上自己的训练数据不足,这就需要我们对已有的网络进行拷贝权重,用自己的数据进行fine-tune,从而达到自己的目的

解决方法:

首先需要matcaffe,

运行以下代码即可


caffe.reset_all();##启动caffe
net = caffe.Net('after-modify-deploy.prototxt', 'original.caffemodel', 'test');##根据修改的
##deploy文件对caffemodel进行修改
 
 net.save('after-modify.caffemodel');##将修改后的caffemodel进行保存
所需要的修改 皆在原有model的deploy文件中进行修改,
而后执行该代码即可
 

 

1、删除方法

在caffe中,很多训练完的模型只提取特征,然后比较两个特征的相似度,而不是分类。这个情况,可以删除caffe模型中的最后一层全连接层,这样可以大大减小模型,因为全连接层的参数非常多,方法如下:

 net = caffe.Net('XX_deploy.prototxt', 'XX.caffemodel', 'test');

 net.save('XX_remove_the_last_fc.caffemodel');

其实可以扩展到删除任意最后几层的参数,只需要在XX_deploy.prototxt中删除你需要删除层即可,呵呵,就这么简单。

2、修改方法

加载模型;net = caffe.Net('XX_deploy.prototxt', 'XX.caffemodel', 'test');

修改:net.layers('names').params(1).set_data(w);
           net.layers('names').params(2).set_data(b);

保存模型net.save('XX.caffemodel');
 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值