在处理某些问题时,可能会需要自己去定义特定的layer来实现某些特殊功能,现将添加新的caffe layer的具体步骤进行整理,便于以后复习。
(一)具体步骤如下:
1. 修改{caffe_dir}/src/caffe/proto/caffe.proto 文件,在 V1LayerParameter的LayerType enum中添加新的layer的名称及ID(如:MYLAYER 38),并在V1LayerParameter中添加MyLayer的参数说明;在message LayerParameter中添加MyLayer的参数说明,同时更新 LayerParameter的available ID(如:optional MyLayerParameter my_layer_param = 146);最后添加新Layer的参数说明。
message MyLayerParameter {
optional uint32 para1 = 1; (1 is the ID of para1 in this layerparameter)
optional bool para2 = 2 [default = true];
optional FillerParameter para3 = 3;
optional float para4 = 4;
}
2. 在{caffe_dir}/src/caffe/util下的upgrade_proto.cpp的const char* UpgradeV1LayerType(const V1LayerParameter_LayerType type)函数中添加如下代码,方便已经训练好的模型进行转换。
case V1LayerParameter_MYLAYER :
return "MyLayer";
3. 在{caffe_dir}/include/caffe/layers/ 文件夹中增加该layer的类的声明my_layer_layer.h文件。
4. 在{caffe_dir}/src/caffe/layers/目录下新建.cpp和.cu文件,进行类实现。
5. 在{caffe_dir}/src/caffe/test/中增加layer的测试代码,对所写的layer前传和反传进行测试,测试还包括速度。
(二)编译
make all -j8
Note:若报错,则根据相应的错误位置检查语法错误。
make test -j8
make runtest -j8
Note:若报错,则根据相应的错误位置检查逻辑错误。
相关文章
- http header java,在Java中的HTTP请求中添加HEADER
- 在JAVA中自定义连接数据库的工具类
- 因特尔显卡自定义分辨率_事实:在新版本的“英特尔高清图形控制面板”中设置自定义方法...
- c#调用c语言的自定义函数,[转]在C#中调用C语言函数(静态调用Native DLL,Windows & 平台)...
- 在webpack中通过 unplugin-vue-define-options 插件, 实现 在Vue3 setup语法糖中,自定义组件的 name 属性,最后实现组件的全局自动注册,
- 在kernel中添加自定义驱动、无线网卡/声卡的配置
- python 在字典中添加键值对的方法。
- html表单 csrf,在HTML文件的表单中添加{%csrf_token%}便可以解决问题
- pe系统怎么加服务器raid驱动,在PE中添加sata-raid驱动的方法:u盘启动盘制作
- Linux在文件第一行添加字符,使用shell命令给文件中每一行的前面、后面、指定列添加字符...