最近项目没什么事情,导师又让写论文,所以开始跑实验,争取研一下学期发篇小论文吧。
在跑SE-Resnet的时候,会要自己在caffe的源码中添加一个新的层,叫Axpy,将avg pooling及scale等操作一起封装的一个type.
从github上下载了源码之后:
添加的过程很简单,将.hpp,.cpp,.cu文件分别放入到对应的文件夹,在caffe.proto文件中加上想对应的message param.注意添加的ID不能重复。
但我踩的坑是:我是直接将文件放入到我目录文件夹里的,然后打开caffe.sln项目解决方案,我幼稚的疑问,vs在打开整个解决方案的时候会将我刚放入的新的文件都是加载出来,然后生成解决方案,但是NO,好蠢。切记啊是在vs界面添加程序。
就这样,成功了。
但是网络方面还有一个问题,就是目前博客上没有人提,很多人跑resnet,会遇到不收敛的情况,那是你一定要注意你的BN层,use_global_stats: 一定要设为false(训练阶段),还有为你的conv层的权重添加初始化。对比一下msra和axvier的区别,经验是你的activation如果用的sigmoid,那么对应用msra更好。