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

来源:互联网 发布:软件编制资质 编辑:程序博客网 时间:2024/05/21 17:28

继续调昨天的bug2

为了解决这个segmentation fault 我做了很多尝试,其中有一样是把所有的num()改成shape(0),height()改成shape(1)......不过没用,虽然新版的caffe是推荐用shape的。

然后我在github官方issues上搜了一下,发现有个人有一个cudaSuccess(77 vs. 0)的问题,虽然没有人回复,但他把信息列的很完整,包括操作过程,我本来想按他的方法做一下,看是不是和我一样,因为我好像也遇到过这个错误信息。然后因为make install用不了,我直接make runtest,发现Unknown V1LayerParameter layer type: 40 ,这就是我的新层,然后我在proto找到了前天添加的BN层,感觉多余就删掉了,只保留我自己写的Gen层,结果就能生成caffemodel了。

所以这个问题是由老版本的BN层引起的。虽然没找到具体哪一行引起了这个bug,但debug成功的感觉还是爽。以后再慢慢研究这个BN层。

收获:

1、对于我们这一行,在debug上拼时间是没用的,不如先好好休息,可能以前没注意到的小细节慢慢就注意到了。

2、对于像这种segmentation fault,我花一天时间定位到某一行,结果发现问题和这一行没有关系,不如倒退一步,所以对于已经弄好了的东西,不要随便在那上面改,做好git或者备份。(学会用giuhub对于大一点的项目来说是很有必要的,如果项目太大不好git,就物理备份一下)

3、对于不是某一行代码问题的bug,先怀疑自己的代码错了,导致别人鲁棒的代码出了问题,就算定位到别人的代码里,也要先怀疑是不是自己的代码引起的


今日收获:

unpool层是pool层反向回去得到的,如果是MAX则只保留最大值返回,其他的情况还没研究

deconv应该叫convolution transposed,是forward和backward颠倒顺序的卷积。如果输入是(n,c,h,1)核和步长是(k*1,s*1)则结果为s*(h-1)+k,若s==k则为h*k

bn层待研究


0 0
原创粉丝点击