Unknown layer type:
在该layer的实现文件(在$caffe_root/src/caffe/layers/目录下,如pool层的实现在src/caffe/layers/pooling_layer.cpp)INSTANTIATE_CLASS(PoolingLayer);加入下面这条语句:
REGISTER_LAYER_CLASS(Pooling);(记住Pooling后面不要带Layer)。
Layer type * already registered:
这个错误是,在Layer_factory中已经注册过这个函数(REGISTER_LAYER_CREATOR(Pooling, GetPoolingLayer);),而在这个layer的实现文件中用又用REGISTER_LAYER_CLASS注册了一遍,此时就需要将实现文件中的REGISTER_LAYER_CLASS注释掉。
完成上述修改之后需要重新编译caffe。网上还有在调用caffe的头文件中加入REGISTER_LAYER_CLASS的方法,不用重新编译caffe,具体适用与否自己可以试验一下。
caffe使用了工厂模式。具体可以查看博客http://blog.csdn.net/langb2014/article/details/50991315