此程序需要协议缓冲区运行时库的3.2.0版本,但安装的版本为2.6.1

时间:2017-07-06 00:53:19

标签: python pip protocol-buffers caffe pycaffe

我正在尝试训练一个Caffe模型。我的.prototxt文件使用自定义Python数据和丢失层。

但是,当我在终端中执行training命令时,会出现此错误:

[libprotobuf FATAL google/protobuf/stubs/common.cc:61] This program requires version 3.2.0 of the Protocol Buffer runtime library, but the installed version is 2.6.1.  Please update your library.  If you compiled the program yourself, make sure that your headers are from the same version of Protocol Buffers as your link-time library.  (Version verification failed in "google/protobuf/descriptor.pb.cc".)
terminate called after throwing an instance of 'google::protobuf::FatalException'

我的Python包管理器(pip)安装了protobuf版本3.2.0,但是对于名为libprotoc的包,系统版本为2.6.1。我不知道如何指定pip protobuf版本是我想用于caffe的版本。

在pip上安装了3.3.0版protobuf而系统版本安装了2.6.1版本的另一台计算机上,我被抛出相同的错误,除了它说程序需要版本3.3.0而不是版本3.2.0

最佳。

2 个答案:

答案 0 :(得分:1)

今天我遇到了完全相同的问题。对我有用的解决方法是从caffe的python接口开始训练,而不是直接从shell开始。例如:

import caffe

weights = '../ilsvrc-nets/vgg16-fcn.caffemodel'
caffe.set_device(0)
caffe.set_mode_gpu()

solver = caffe.SGDSolver('solver.prototxt')
solver.net.copy_from(weights)

for _ in range(25):
    solver.step(4000)

当然,上面只是一个例子/非常准确,你必须自己处理验证集的运行,但pycaffe界面非常灵活,允许你做所有这些。您可以在此处找到有关如何使用它的更多详细信息:

http://christopher5106.github.io/deep/learning/2015/09/04/Deep-learning-tutorial-on-Caffe-Technology.html

答案 1 :(得分:0)

我通过pip安装相同版本的protobuf来解决这个问题,就像来自apt-get的那样。

pip install protobuf==2.6

替代方案(我想避免)是从源代码安装protobuf。

https://github.com/google/protobuf/blob/master/src/README.md