自己建立一个工程,希望调用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);  

  

}

---

added by ZhangPY 2016-9-14 23:21

注意,这里我的调试过程中还出现了注册过再次注册的错误,但是去掉自己添加的注册后,又爆出没有注册,所以我索性直接将caffelib源码中的layer.hpp中的注册部分给注释掉了,然后用我自己的地方去注册它,这样就不再出现问题了。

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

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

我在添加过程中,之前在每个extern INSTANTIATE_CLASS 后面都添加 REGISTER_LAYER_CLASS,结果报错,说重复注册。于是删掉了。

所以,如果你以后遇到没有注册的layer,就照上面做就好了,万一遇到重复注册,也应该会举一反三,知道如何解决,例如把判断重复注册的语句修改一下等等。

【神经网络与深度学习】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. [神经网络与深度学习][计算机视觉]SSD编译时遇到了json_parser_read.hpp:257:264: error: ‘type name’ declared as function ret

    运行make之后出现如下错误: /usr/include/boost/property_tree/detail/json_parser_read.hpp:257:264: error: 'type n ...

  3. 【神经网络与深度学习】【CUDA开发】【VS开发】Caffe+VS2013+CUDA7.5+cuDNN配置过程说明

    [神经网络与深度学习][CUDA开发][VS开发]Caffe+VS2013+CUDA7.5+cuDNN配置过程说明 标签:[Qt开发] 说明:这个工具在Windows上的配置真的是让我纠结万分,大部分 ...

  4. 【神经网络与深度学习】caffe静态链接库“Unknown layer type: Convolution (known types: )”和“ 磁盘空间不足”问题的解决办法

    这一段时间把caffe在windows环境下编译了一下,tool里面的cpp全部编译成了exe.再用的时候有两个问题让我头疼了好长时间! 第一个问题 "db_lmdb.hpp:14] Che ...

  5. 人工智能深度学习Caffe框架介绍,优秀的深度学习架构

    人工智能深度学习Caffe框架介绍,优秀的深度学习架构 在深度学习领域,Caffe框架是人们无法绕过的一座山.这不仅是因为它无论在结构.性能上,还是在代码质量上,都称得上一款十分出色的开源框架.更重要 ...

  6. 【神经网络与深度学习】【Qt开发】【VS开发】从caffe-windows-visual studio2013到Qt5.7使用caffemodel进行分类的移植过程

    [神经网络与深度学习][CUDA开发][VS开发]Caffe+VS2013+CUDA7.5+cuDNN配置成功后的第一次训练过程记录<二> 标签:[神经网络与深度学习] [CUDA开发] ...

  7. [源码解析] 深度学习分布式训练框架 Horovod (1) --- 基础知识

    [源码解析] 深度学习分布式训练框架 Horovod --- (1) 基础知识 目录 [源码解析] 深度学习分布式训练框架 Horovod --- (1) 基础知识 0x00 摘要 0x01 分布式并 ...

  8. [源码解析] 深度学习分布式训练框架 horovod (7) --- DistributedOptimizer

    [源码解析] 深度学习分布式训练框架 horovod (7) --- DistributedOptimizer 目录 [源码解析] 深度学习分布式训练框架 horovod (7) --- Distri ...

  9. [源码解析] 深度学习分布式训练框架 horovod (16) --- 弹性训练之Worker生命周期

    [源码解析] 深度学习分布式训练框架 horovod (16) --- 弹性训练之Worker生命周期 目录 [源码解析] 深度学习分布式训练框架 horovod (16) --- 弹性训练之Work ...

随机推荐

  1. hiho #1038 : 01背包 (dp)

    #1038 : 01背包 时间限制:20000ms 单点时限:1000ms 内存限制:256MB 描述 且说上一周的故事里,小Hi和小Ho费劲心思终于拿到了茫茫多的奖券!而现在,终于到了小Ho领取奖励 ...

  2. i3wm

    1.音量调节(alsa-utils) alsamixer: alsamixer is a graphical mixer program for the Advanced Linux Sound Ar ...

  3. 对JavaScript 引擎基础:Shapes 和 Inline Caches

    全文有5个部分组成 1.JavaScript 引擎工作流程:介绍 JavaScript 引擎的处理流水线,这一部分会涉及到解释器/编译器的内容,且会分点介绍不同引擎间的差别与共同点: 2.JavaSc ...

  4. 31.整数中1出现的次数(从1到n整数中1出现的次数)

    题目描述 求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1.10.11.12.13因此共出现6次,但是对于后面问题他就没辙了. ...

  5. python基础--几个特性

    1.helloword程序的解释 #!/usr/bin/python3 print("Hello, World!") 关于脚本第一行的 #!/usr/bin/python 的解释, ...

  6. linux查看网关

    Linux下查看网关方法:route -n ip route show traceroute www.prudentwoo.com -s 100 第一行就是自己的默认网关 netstat -r mor ...

  7. JS中生成随机数

    1.Math 对象方法: Math.ceil(); //向上取整. Math.floor(); //向下取整. Math.round(); //四舍五入. Math.random(); //0.0 ~ ...

  8. 2018 计蒜之道 初赛 第五场 A 贝壳找房搬家

    贝壳找房换了一个全新的办公室,每位员工的物品都已经通过搬家公司打包成了箱子,搬进了新的办公室了,所有的箱子堆放在一间屋子里(这里所有的箱子都是相同的正方体),我们可以把这堆箱子看成一个 x*y*z 的 ...

  9. TTTTTTTTTTTT Codeforces Round #353 (Div. 2) D 平衡二叉树的set模拟 没有很懂

    题意:给你n个数字,第一个点作为根节点,然后每次插入一个节点,构建一棵平衡二叉树,并输出插入节点后该节点的父节点的值 #include <iostream> #include <cs ...

  10. 堤堤云海外IDC

    http://www.ddyidc.com 堤堤云网络全球互联 堤堤云网络致力为客户提供优质的海外服务器租用服务,各种专线解决方案. 产品分类:服务器租用.IP租用.托管.专线传输.防御.优质回国CN ...