Bootstrap

Check failed: registry.count(t ype) == 1 (0 vs. 1) Unknown layer type

问题:window下面将caffe封装为caffe.lib,自己的工程调用caffe.lib的时候,会出现某一个layer未注册或者已经注册过了等问题。解决方法就是自己建一个头文件,比如mycaffe.h,里面的内容如下:

//#ifndef CAFFE_H
//#define CAFFE_H
#ifndef CAFFE_REG_H
#define CAFFE_REG_H
#include "caffe/common.hpp"
#include "caffe/layers/input_layer.hpp"
#include "caffe/layers/conv_layer.hpp"
#include "caffe/layers/relu_layer.hpp"
#include "caffe/layers/pooling_layer.hpp"
#include "caffe/layers/lrn_layer.hpp"
#include "caffe/layers/inner_product_layer.hpp"
#include "caffe/layers/dropout_layer.hpp"
#include "caffe/layers/softmax_layer.hpp"
#include"caffe/layers/slice_layer.hpp"
namespace caffe
{
 extern INSTANTIATE_CLASS(InputLayer);
 //REGISTER_LAYER_CLASS(Input);
 extern INSTANTIATE_CLASS(ConvolutionLayer);
 REGISTER_LAYER_CLASS(Convolution);
 extern INSTANTIATE_CLASS(ReLULayer);
 REGISTER_LAYER_CLASS(ReLU);
 extern INSTANTIATE_CLASS(PoolingLayer);
 REGISTER_LAYER_CLASS(Pooling);
 extern INSTANTIATE_CLASS(LRNLayer);
 REGISTER_LAYER_CLASS(LRN);
 extern INSTANTIATE_CLASS(InnerProductLayer);
 extern INSTANTIATE_CLASS(DropoutLayer);
 extern INSTANTIATE_CLASS(SoftmaxLayer);
 REGISTER_LAYER_CLASS(Softmax);
 //REGISTER_LAYER_CLASS(LRN);
 // extern INSTANTIATE_CLASS(InputLayer);
 //extern INSTANTIATE_CLASS(InnerProductLayer);


 //extern INSTANTIATE_CLASS(LRNLayer);
 //REGISTER_LAYER_CLASS(LRN);

 extern INSTANTIATE_CLASS(SliceLayer);
 //REGISTER_LAYER_CLASS(Slice);
 //extern INSTANTIATE_CLASS(TanHLayer);
 //REGISTER_LAYER_CLASS(TanH);
 //extern INSTANTIATE_CLASS(AbsValLayer);
 //REGISTER_LAYER_CLASS(AbsVal);*/

}
#endif // !CAFFE_H
其中namespace里面的layer根据自己需要添加。这时还会遇到一个麻烦的问题,添加了REGISTER_LAYER_CLASS()他会报重复注册,去掉这一句又报不认识这一层。这种问题出现的可能性是你自己封装了一个lib(我的问题就是这样)用来做模型的加载、图像特征提取等等,只需要把这个头文件include到你的库的头文件或者库的cpp文件里面即可。

;