自己建立一个工程,希望调用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. LeetCode实战:将有序数组转换为二叉搜索树
  2. 802.11 Power Save(节电/省电/节能)机制总结
  3. matlab多项式相乘的法则_卷积计算与多项式乘法
  4. Leetcode 剑指offer 22. 链表中第k个节点 (每日一题 20210716)
  5. java圆饼图插件_饼图----插件
  6. 第三次学JAVA再学不好就吃翔(part50)--String类练习
  7. 创建型模式——单例模式
  8. AMD中国:没有对拼多多及其平台上任何店铺授权
  9. 利用Ajax实现DataGrid无刷新分页(AjaxGrid)【转】
  10. 文件系统FAT32、NTFS、exFAT的对比
  11. stl文件unity_Unity导入STL格式模型(二)
  12. 日常开发中,String类中常用的方法
  13. 怎么在电脑桌面添加待办便签小助手
  14. java错误找不到符号怎么办_java错误找不到符号
  15. 北航单片机李广弟c语言还是汇编,单片机基础备课笔记
  16. C语言基础之十进制与二进制转换
  17. 【UE4全反射松耦合框架笔记】第一章 UE4框架基础(下)
  18. C语言中puts跟printf的区别
  19. CDR插件开发之CPG插件016 -【实例】在CPG插件中动态导出图像到临时文件夹
  20. 云服务器怎么采购便宜?云服务器优惠 3 大准则

热门文章

  1. 离散数学(第五版) 迪杰斯特拉(Dijkstra)算法计算图画法流程
  2. 基于Springboot+MySQL的个人健康监控管理系统
  3. vs2010使用教程c语言编程,VS2010的使用
  4. 《Windows游戏编程大师技巧》 四、GDI、控件和突发奇想
  5. C语言之父辞世引发“分号”悼念
  6. 2019年1月30日
  7. 英伟达显卡不同架构_求历代英伟达显卡架构名称
  8. 二维联合分布(X,Y)求(U,V)
  9. 自定义Qml控件:ImageButton
  10. linux操作系统原理【3】