自己建立一个工程,希望调用libcaffe.lib ,各种配置好,也能成功编译,但是运行就会遇到报错

F0519 14:54:12.494139 14504 layer_factory.hpp:77] Check failed: registry.count(t ype) == 1 (0 vs. 1) Unknown layer type: Input (known types: Input )

各种跟踪调试都找不到原因,相同的代码在microsoft版本的caffe里使用就没有问题,自己新建一个项目就出

错。

网上找了一下原因,大概是libcaffe.lib是静态库的方式编译的,有一些东西没法使用,暂时只能肤浅的这么

理解。我试过改成动态库,编译都通不过了。

一些参考方案:

http://stackoverflow.com/questions/30325108/caffe-layer-creation-failure

http://stackoverflow.com/questions/32416226/create-layer-error-at-layer-factory-hpp

https://groups.google.com/forum/#!topic/caffe-users/Py6IwMQvtqo/discussion

尝试了不少,都不怎么给力。

我甚至在github项目下提问

官方答复是只能在解决方案里面新建项目。

当然,最后我找到了一个办法,

一开始没有太看明白这是什么意思。

后来仔细看了一下libcaffe工程的目录结构,发现有个layer目录,里面放的都是各种层,什么ArgMaxLayer,

ScaleLayer,当然也有InputLayer,感觉很有可能问题就出在这些代码里面,仔细阅读input_layer.cpp,果然发现

有一句

INSTANTIATE_CLASS(InputLayer);REGISTER_LAYER_CLASS(Input);

所以解决方案就是,新建一个头文件,例如head.h,将他提示你没有的层的头文件包含进去,在添加类似于

extern INSTANTIATE_CLASS(InputLayer);的这句话

后来发现有的层添加了也会报错,那是因为他们没有类似于REGISTER_LAYER_CLASS(Input);这句话。可以想象,

REGISTER_LAYER_CLASS这句话作用就是注册layer。可以添加进去。

我贴上我的head.h,添加了我使用到的layer

#include "caffe/common.hpp"
#include "caffe/layers/input_layer.hpp"
#include "caffe/layers/inner_product_layer.hpp"
#include "caffe/layers/dropout_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/softmax_layer.hpp"namespace caffe
{extern INSTANTIATE_CLASS(InputLayer);extern INSTANTIATE_CLASS(InnerProductLayer);extern INSTANTIATE_CLASS(DropoutLayer);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(SoftmaxLayer);REGISTER_LAYER_CLASS(Softmax);}

你所使用的layer可能跟我不一样,但是解决方法是一样的,提示哪个layer找不到,就把那个layer添加进来就是

了。

彻底一点的方案是把所有的layer全写进来。

我在添加过程中,之前在每个extern INSTANTIATE_CLASS 后面都添加 REGISTER_LAYER_CLASS,结果报错,说

重复注册。于是删掉了。

所以,如果你以后遇到没有注册的layer,就照上面做就好了,万一遇到重复注册,也应该会举一反三,知道如何解

决,例如把判断重复注册的语句修改一下等等。

【边喝caffee边Caffe 】(三) Check failed: registry.count(t ype) == 1 (0 vs. 1) Unknown layer type相关推荐

  1. windows7下解决caffe check failed registry.count(type) == 1(0 vs. 1) unknown layer type问题

    在Windows7下调用vs2013生成的Caffe静态库时经常会提示Check failed: registry.count(type) == 1 (0 vs. 1) Unknown layer t ...

  2. Check failed: registry.count(type) == 1 (0 vs. 1) Unknown layer type: Python

    参考:http://blog.csdn.net/lanyuxuan100/article/details/70231173 windows:http://blog.csdn.net/birdwcp/a ...

  3. 【caffe】Check failed: status == CUDNN_STATUS_SUCCESS (4 vs. 0) CUDNN_STATUS_INTERNAL_ERRO

    我在matcaffe,pycaffe,以及 tools/caffe ,都碰到: Check failed: status == CUDNN_STATUS_SUCCESS (4 vs. 0) 根本原因是 ...

  4. 【caffe】 Check failed: error == cudaSuccess (30 vs. 0) unknown error

    解决办法 : 加 sudo 用caffe,不报错,那一定要的时假caffe. ubuntu16.04 ,写了一个.py文件调用resnet.caffemodel 来对图片进行分类. 但是在运行时出错, ...

  5. 训练caffe:registry.count(type) == 0 (1 vs. 0) Solver type Nesterov already registered

    命令:./continue-train.sh 内容:../../caffe-master/build/tools/caffe train -gpu=$1 -solver=solver.prototxt ...

  6. caffe 报错 Check failed: error == cudaSuccess (77 vs. 0) an illegal memory access was encounteredcaffe

    caffe 报错 Check failed: error == cudaSuccess (77 vs. 0) an illegal memory access was encountered 训练时候 ...

  7. caffe报错:Check failed: width <= datum_width (28 vs. 17)

      使用caffe建立模型的时候需要转换LMDB格式,但转换完成进行训练的时候却会报错Check failed.这个错误的原因是图片大小不匹配.在之前我一直以为在转换之前要把所有图片大小转换为目标尺寸 ...

  8. Check failed: error == cudaSuccess (74 vs. 0) misaligned address的解决方法

    今天训练网络的时候加入了Deconvolution Layer,结果一运行报Check failed: error == cudaSuccess (74 vs. 0) misaligned addre ...

  9. faster-rcnn中添加Mask中的RoiAlign层,使回归框更精确( roi_align_layer.cu:240] Check failed: error == cudaSuccess *)

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/e01528/article/details/80265118 具体的操作为什么这样做,可参照: 1. ...

  10. 解决npm 的 shasum check failed for错误

    使用npm安装一些包失败,类似如下报错情况: C:\Program Files\nodejs>npm update npm npm ERR! Windows_NT 10.0.14393 npm ...

最新文章

  1. 机器学习帮助人类找到最硬的过渡金属氮化物
  2. linux下多进程编程简介
  3. wireshark网络分析就这么简单 pdf_才知道,PDF、Excel、Word互转这么简单?涨知识了...
  4. java取消按钮事件_java按钮事件处理程序
  5. CBitMap的用法 from http://www.cnblogs.com/toconnection/archive/2012/08/04/mfc.html
  6. 201521123052《Java程序设计》第7周学习总结
  7. 优信拍集团php面试题_【优信拍PHP高级开发工程师面试】面试官是我遇到过的面试水平最低的。-看准网...
  8. c语言常量的正确表示const,C语言中的const和free用法详解
  9. ffmpeg speex转换为mp3或者aac
  10. FreeRTOS队列
  11. 关于数据库记录排序问题
  12. 2017.3.30 时态同步 失败总结
  13. 参数化登陆防止SQL注入攻击
  14. 【Antlr】rule expr: must label all alternatives or none
  15. Apache20、lighttpd、nginx的比较[zt]
  16. A股开盘:深证区块链50指数跌0.46%,泰豪科技涨停
  17. Android Studio中导入第三方库
  18. 【Unity3D 灵巧小知识点】☀️ | Unity脚本生命周期
  19. 台式电脑连接电脑主机与显示器
  20. linux小白家教学一

热门文章

  1. 工程伦理2021秋期末考答案|网课期末考答案|学堂在线|清华大学李正风教授
  2. 用库仑计方法来计量电池容量
  3. Computer:Microsoft Office Visio2021的简介、安装、使用方法图文教程之详细攻略
  4. 2022-2028全球与中国移动卫星通信市场现状及未来发展趋势
  5. APU~ZPU全掌握!
  6. 内核各个版本下载地址
  7. uniapp兼容微信小程序和支付宝小程序遇见的坑
  8. HTML网页设计制作大作业(div+css)~ 环境保护(5个页面)
  9. Delphi7·ProgressBar控件
  10. 客户端软件的结构思考(一)