windows7下解决caffe check failed registry.count(type) == 1(0 vs. 1) unknown layer type问题
在Windows7下調(diào)用vs2013生成的Caffe靜態(tài)庫(kù)時(shí)經(jīng)常會(huì)提示Check failed: registry.count(type) == 1 (0 vs. 1) Unknown layer type的錯(cuò)誤,如下圖:
???????? 這里參考網(wǎng)上資料匯總了幾種解決方法:
1.??????不使用Caffe的靜態(tài)庫(kù),直接將Caffe的source加入到main工程中;
2.??????將Caffe編譯成動(dòng)態(tài)庫(kù);
3.??????使用Caffe靜態(tài)庫(kù),新建一個(gè)caffe_layers_registry.hpp頭文件,文件中的內(nèi)容如下(部分代碼段,需要將所有的層全部列出來(lái)),并且需要將此頭文件include到其它文件的上面:
#include "caffe/common.hpp"
// may be need to include other head filesnamespace caffe
{extern INSTANTIATE_CLASS(ConvolutionLayer);extern INSTANTIATE_CLASS(PoolingLayer);extern INSTANTIATE_CLASS(ReLULayer);extern INSTANTIATE_CLASS(TanHLayer);// other layer// may be need to REGISTER_LAYER_CREATOR()
}
4.??????使用Caffe靜態(tài)庫(kù),選中Caffe_Test工程 --> 右鍵,屬性--> 通用屬性 --> 引用 --> 添加引用 --> caffe(此caffe工程為caffe靜態(tài)庫(kù)工程) --> 項(xiàng)目引用屬性 --> 鏈接庫(kù)依賴項(xiàng)設(shè)置為True,使用庫(kù)依賴項(xiàng)輸入設(shè)置為True,如下圖:
5.??????使用Caffe靜態(tài)庫(kù),在原有src/caffe/net.cpp文件中,添加如下代碼段:
#define FORCE_REG(type) \extern LayerRegisterer<float> g_creator_f_##type; \extern LayerRegisterer<double> g_creator_d_##type; \LayerRegisterer<float> *__g_creator_f_##type = &g_creator_f_##type; \LayerRegisterer<double> *__g_creator_d_##type = &g_creator_d_##typeFORCE_REG(TanH);
FORCE_REG(Pooling);
FORCE_REG(ReLU);
FORCE_REG(Sigmoid);
FORCE_REG(Softmax);
FORCE_REG(Dropout);
FORCE_REG(Convolution);
FORCE_REG(Deconvolution);
FORCE_REG(Concat);
FORCE_REG(BNLL);
FORCE_REG(Flatten);
FORCE_REG(InnerProduct);
FORCE_REG(Eltwise);
FORCE_REG(Power);
FORCE_REG(LRN);
FORCE_REG(MemoryData);
FORCE_REG(Data);
FORCE_REG(Split);
FORCE_REG(Reshape);
FORCE_REG(Im2col);
FORCE_REG(Slice);
FORCE_REG(PReLU);
FORCE_REG(SoftmaxWithLoss);
FORCE_REG(Accuracy);
以上第4種、第5種方法親自測(cè)試過(guò)可以正常調(diào)用Caffe靜態(tài)庫(kù),但是依賴的Caffe源碼比較老,后面會(huì)更新到最新版本。
GitHub:https://github.com/fengbingchun/Caffe_Test
總結(jié)
以上是生活随笔為你收集整理的windows7下解决caffe check failed registry.count(type) == 1(0 vs. 1) unknown layer type问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Linux下多线程编程中信号量介绍及简单
- 下一篇: VS2013在Windows7 64位上