我的caffe学习之路<第十三天>

中间空的十天做了包括:新建一个层generate_layer,写forward(1-2天),看bp算法(1-2天),写backward(1-2天),写lmdb输入并搭网络(1-2天),跑程序(1-2天),调输入的bug(1-2天,那lmdb生成的uint8的数据不能直接读入,调了好久)。


原来是用deconv做unpool的事,现在在将unpooling移植到我们的网络上来。


bug:第一次Iteration可以计算loss,第二次 Iteration计算错误

解决:最后的score的大小为5120*4,我们的标签是5120才能计算loss,看loss层的实现,看反卷积层的实现,添加LOG代码,发现第一个可以计算,第二个错误,怀疑unpool大小只初始化一次,经过unpool后大小保持第一次的大小,添加LOG代码,输出layersetup过程和reshape过程中unpool的height_,发现layersetup只运行了一次而reshape每次都会执行,所以unpool_height_的更新应该放在reshape里,然后make一下,搞定。


删掉调试信息并注释掉一些无用代码,我的unpool就能跑了,接下来就是看内部实现(-_-)。

先跑个一万次玩玩。。。(忘记make了,全是调试信息,ctr+c还停不下来-_-)

没拷贝权重,需要先调参数。。。不然下降太慢。。。

直接用测试集验证准确率试试,没ac层不好看结果啊,加个,发现准确率低且不变。。。


bug2:snapshot输出的时候出现Segmentation fault,这个错也发生在caffe训练完后,这应该是什么bug吧,上次遇到这个错是将cpu改为gpu就好了,没有真正解决这个问题。

暂未解决:先改小snapshot值,快速报错,在solver.cpp里添加输出代码,发现在ToProto出错,solver调用net,net调用layer的ToProto,layer的本体在include里,发现是个虚函数,但有实现,layer又调用blobs的实现,这个组织。。。一级级管下来。输出发现就是不能执行到blob层。

调了一天没调出来,感觉是我新加入的层有问题,把它删掉后其他的网络不会出现Segmentation Fault,最后还是自己写的东西不兼容。。。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值