解决caffe训练target_blobs.size ==source_layer.blobs_size(2 vs.1)

说明:这是在caffe利用resnet网络训练二分类的问题遇到的,之所以采用caffe训练是因为使用的嵌入式设备只支持caffe和tensorflow的模型权重文件。

1、首先采用的resnet50训练,搭建网络并加载权重,参考https://blog.csdn.net/m0_37357063/article/details/84726818制作自己的训练集和测试集。在csdnhttps://blog.csdn.net/AMDS123/article/details/89419542上下载对一个的权重,但是最后出现错误无法解析caffemodel文件。于是更换了caffemodel文件(在pudn上下载),错误还是一样的。放弃resnet50,搭建resnet18网络

2、搭建resnet18网络也是简单,在github上下载prototxt,在pudn上下载caffemomdel上,出现错误target_blobs.size ==source_layer.blobs_size(2 vs.1) incompatible number of blobs for layer conv1

3、在网络上搜索相关错误信息,提供如下解决方案:

     https://blog.csdn.net/xiakejiang/article/details/85613849

     https://www.cnblogs.com/xzabg/p/6123459.html

     解决方案大同小异,但是对于我还是无济于事,认真分析错误信息,貌似是输入和输出的blob的size不匹配,错误出现在解析model的时候权重的copy出现的问题,没有分清楚prototxt是source文件还是caffemodel,于是更换了下prototxt,下载https://github.com/HolmesShuan/ResNet-18-Caffemodel-on-ImageNet或者去https://blog.csdn.net/baidu_24281959/article/details/54286497?%3E该博客去直接复制,加载完后出现错误:

目前已经可以对conv1层加载权重了,问题出现在了最后一层,之前conv1不能加载的原因是prototxt中的conv1存在bias,而caffemodel中是没有的。解决办法就是修改prototxt,或者直接更换prototxt

现在的错误意思是:caffemodel中最后一层的参数shape是1000*512,而我自己构建的prototxt是做二分类用的2*512,尺度不匹配,如果想要训练你自己的数据的话,需要将原来的fc1000层名字修改,这样就不会加载caffemodel里面的fc1000了!!

ps:caffemodel未source,prototxt为target

完结,撒花

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值