向caffe中添加自己定义的新层需要:
1. 在caffe-master/src/caffe/proto/caffe.proto文件中添加新层的定义和声明;
2. 书写新层的定义头文件(.hpp),c++文件(.cpp),cuda文件(.cu);
一 、 基本caffe知识
在定义你的新层之前,你必须搞清楚一些关于caffe的文件结构:
1. caffe所有用到的层,solver方法,他们的头文件都在caffe-master/include/caffe中;
2. caffe所有的层,solver方法,lr设置方法等,他们的源文件都存储在caffe-master/src/caffe中;
3. caffe-master/src/caffe/proto/caffe.proto文件定义了所有层的参数,message,这个文件很重要,主要是由于他相当于caffe源码与prototxt文件(网络结构申明文件)的连接接口。
了解了以上的结构,那我们肯定可以推出:在定义新层的时候,头文件和源文件中定义的新层的名称,新层参数的名称必然与caffe.proto中的对应。
二、修改caffe.proto文件
为了方便起见,假设我添加的新层名为“BatchNormLayer”,则我需要在caffe.proto中修改两处: