caffe 想把添加层代码做成动态库,动态加载到caffe版本,有做过的能提供点经验吗?

    想把caffe核心代码作为不动的恒定模块,把新添加的层做成动态库,caffe上电的时候用dlopen 动态加载这些动态库。
   面临的问题是:新添加的层修改caffe.proto,caffe.proto会在编译阶段生成cc和h代码,如何把caffe.proto中的新添加层的东西剥离出来?
已邀请:

lizhli2825

赞同来自: caffe 陶潜水

     没有人告诉我怎么做,但是我摸索出来了,分享给大家:

    参考了添加python层的做法,既然caffe中新添加层可以添加成python层,python层和caffe主版本是脱耦合的,那么新添加的层就可以添加成c++层,并且新添加的C++层和caffe的主版本也可以脱耦合。

    例如添加BN层,把BN层的代码做成SO动态库,dlopen的时候就会把BN层添加进去,因为BN层代码自己会INSTANTIATE_CLASS和REGISTER_LAYER_CLASS,这两个宏在调用dlopen的时候会将BN层载入进去。就这么简单。
    比较麻烦的是BN层的参数。

要回复问题请先登录注册