Check failed: registry.count(type) == 0 (1 vs. 0) Layer type Convolution already registered

在复现别人caffe程序的时候遇到了这么一个奇怪的问题,跟网上一个问题有点像:Check failed: registry.count(type) == 1 (0 vs. 1) Unknow layer type,但是却是完全不同的两个问题。

我这个问题的原因是由于系统protobuf和python的protobuf版本不一致导致的,因为按照caffe官方给出的Ubuntu依赖库安装方式,系统protobuf是通过安装的:

sudo apt-get install libprotobuf-dev libleveldb-dev

如果protoc --version查看版本的话,应该是2.6.1。

但是python的protobuf是通过pip install -r requirements.txt安装的,里面protobuf>=2.5.0,这样会默认安装3.x.x版本的protobuf。这样就导致了protobuf版本的不一致,在某些caffe程序中就会出现题中的问题。

解决方案很简单:(1)升级系统protobuf。(2)通过如下代码降级python中的protobuf。

pip uninstall protobuf
pip install protobuf==2.6.1

(3)采用python的虚拟环境。(4)docker。

我采用了第(2)中方式,因为对我来说最简单快捷,这个解决方法因人而异。比如(2)可能会导致tensorflow1.8.0不能用的问题,因为tensorflow1.8.0要求protobuf>=3.4.0。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值