2016-07-27 1 views
1

. Я хотел использовать замечательный пакет-тензор на основе ethereon, и я столкнулся с той же проблемой, описанной в this closed issue :Caffe to Tensorflow (Kaffe by Ethereon): TypeError: дескрипторы не должны создаваться напрямую, а извлекаются только из их родительских объектов.

Когда я запускаю пример или попытаться import caffepb я получил сообщение об ошибке:

>>> import caffepb 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "caffepb.py", line 28, in <module> 
     type=None), 
    File "/home/me/anaconda/python2.7/site-packages/google/protobuf/descriptor.py", line 652, in __new__ 
    _message.Message._CheckCalledFromGeneratedFile() 
TypeError: Descriptors should not be created directly, but only retrieved from their parent. 

Я использую Tensorflow 0.7.0 на Linux 64 бита UBUNTU 14,04 машины с Protobuf 3.0.0b2.post (но это также произошло с 3.0.0a4 и 3.0.0b2) с Python 2.7 и anaconda.

Я пытался заново установить protobuf и tensorflow несколько раз, так как я полагал, что это, возможно, конфликт между различными установками protobuf (или, по крайней мере, это был выход из проблемы github), но я не мог заставить его работать даже после сочетание pip install protobuf, pip удаляет protobuf или непосредственно устанавливает protobuf .whl.

Что бы вы посоветовали?

EDIT: Использование виртуальной среды может быть решением, но я хотел бы избежать, если это возможно

ответ

2

Переименование любых дескрипторов создания файлов с суффиксом «_pb2.py» решит эту проблему.

UPDATE (4 апреля 2017): В проекте "кофейная-tensorflow", я переименовал "Каффе/Caffe/caffepb.py" к "caffe_pb2.py", и это решило проблему. Это единственный файл, который я нашел в этом проекте, который создает дескрипторы PB.

+0

Очень интересное решение, если оно верно, я скоро попробую! – jean

+0

Не могли бы вы уточнить? Вы говорите о файлах в репозитории, а также о файлах, установленных в системе? – npit

+0

@npit См. Это https://github.com/ethereon/caffe-tensorflow/issues/114 – nnrales

0

я тоже встретил ту же проблему. Мое решение (обходное решение) было таким же, как один из комментариев в выпуске - установить/запустить tf и protobuf3 (и все) в virtualenv.

Я больше не знаю, в чем проблема. Это всего лишь одно обходное решение, которое вы можете попробовать.

+1

Спасибо за ответ, но это обходное решение уже упоминалось в проблеме github и не убеждало меня, поскольку это слишком решительное решение. – jean