您的位置:首页 > Web前端

caffe中添加新层

2017-07-26 21:56 190 查看
caffe中包含有许多的layer,最基础的是blob,在caffe的整个结构中,所有的层中值的传递都是通过blob结构中的指针传递,因此需要了解一下blob的结构

在添加新层时,需要找到caffe中的proto文件,里面定义了许多参数,可以在这个里面定义自己在网络中需要用到的参数,并且定义参数的类型,例如说,在LayerParameter中添加新层里所需的参数,在这个地方后面加上自己的定义的名称,后面的数字根据上面最后一次添加的决定,同时添加完以后,加上一句 LayerParameter next available layer-specific ID: 同时写上自己最后加层的名称,避免以后加层时重复使用ID。



在LayerParameter 中添加新加层的ID后,对该层进行定义,定义需要用到的变量与变量类型,如图示,


然后对proto文件进行编译,生成新的链接文件。

在完成上述的步骤后,在caffe的 ./src/caffe/layers/里面添加自己的.cpp文件和GPU实现的.cu文件,在caffe 的 ./include/caffe/layers/里面添加自己的.hpp头文件,然后对整个caffe进行编译 make all 。

在其中需要注意的问题是:

1、如果使用了opencv的相关函数,需要对Makefile.config中的相关的对应值进行修改,然后将整个./build 删除,重新编译,避免出现其他错误

2、在对层进行初始化的过程中,使用的名称一定是LayerSetUp,而不是自己添加层的,比如说MyLayerSetUp,这样在后面编译的过程中不会出错,但是运行的过程中,该层并没有得到初始化,可以参考net.cpp中相关参数的初始化的代码

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: