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

275 篇文章 41 订阅 ¥39.90 ¥99.00
113 篇文章 53 订阅 ¥39.90 ¥99.00
在Windows上编译Caffe时遇到'Convolution'层类型未知和磁盘空间不足的问题。解决磁盘问题需将数据后端从lmdb更改为leveldb,并在命令行和.protoxt配置中指定LEVELDB。对于'Convolution'错误,由于未引用的层模板未生效,需要使用#pragma comment(linker, "/include:层名")进行强制链接。通过生成包含所有强制链接的头文件并引入项目解决了问题。" 51199705,5515279,Xamarin Frame控件详解,"['Xamarin', '移动开发', 'UI设计']
摘要由CSDN通过智能技术生成

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

      

       第一个问题 “db_lmdb.hpp:14] Check failed: mdb_status == 0 (112 vs. 0) 磁盘空间不足。”

               这问题是由于lmdb在windows下无法使用lmdb的库,所以要改成leveldb。

               但是要注意,由于backend默认的是lmdb,所以你每一次用到生成的图片leveldb数据的时候,

               都要把“--backend=leveldb”带上,这个很容易忘了

               还有在.prototxt中

               data_param {
                      source: "./mysample_val_leveldb"
                      batch_size: 100
                      backend: LEVELDB     //这个也要改掉的
                    }

       

       第二个问题 “Unknown layer type: Convolution (known types: )”

              这个问题是让我最头痛的,弄了很长时间,也看了很多解决方法!

              现在解决了,回想起来,其实在stackoverflow的几个问题解决里是,都看到了“ /INCLUDE linker”,只是自己对很多东西不熟悉,才导致无法第一时间就看懂。

              知道看了这位大神的博客http://www.cnblogs.com/coderzh/p/LinkAllSymbols.html,我才想到stackoverflow的那个“/include linker”是什么!

              在微软的编译器中有的对于那些没有用到的变量和函数是不生效的!

              caffe中的这些层模板,其实都已经注册了,只不过,没有引用没办法生效!

              所以你要找到这些代码对应的强制链接,在你项目的主函数的头文件中添加一句“#pragma comment(linker, "/include:你的强制链接")”;就行了!

             按照上面那位大神的方法,我看了一下,有2万多个要强制链接,所以是非常多的,想找到一两个非常不容易,所以我就用了上面大神的方法,直接将所有的强链接生成了头文件,引用进来项目来,就可以了!



          问题就这样开心的解决了!!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值