AttributeError: 'google.protobuf.pyext._message.RepeatedCompositeCo' object has no attribute 'append'

AttributeError: 'google.protobuf.pyext._message.RepeatedCompositeCo' object has no attribute 'append'

我正在 Google Collab 上的 MobileNetv2 预训练模型上构建迁移学习模型。直到昨天,一切都很好。但是,今天,在执行

#Create the base model(feature_extractor) from the pre-trained model MobileNet V2
_URL = "https://tfhub.dev/google/tf2-preview/mobilenet_v2/feature_vector/2"
feature_extractor = hub.KerasLayer(_URL, input_shape=(_TARGET_SIZE, _TARGET_SIZE,3))

我收到错误:


---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-29-663d4cbb70df> in <module>()
      2 _TARGET_SIZE = 224
      3 _URL = "https://tfhub.dev/google/tf2-preview/mobilenet_v2/feature_vector/2"
----> 4 feature_extractor = hub.KerasLayer(_URL, input_shape=(_TARGET_SIZE, _TARGET_SIZE,3))
      5 #print(feature_extractor._layers)


/usr/local/lib/python3.6/dist-packages/tensorflow_core/python/ops/resource_variable_ops.py in _variable_handle_from_shape_and_dtype(shape, dtype, shared_name, name, graph_mode, initial_value)
    165     handle_data = cpp_shape_inference_pb2.CppShapeInferenceResult.HandleData()
    166     handle_data.is_set = True
--> 167     handle_data.shape_and_type.append(
    168         cpp_shape_inference_pb2.CppShapeInferenceResult.HandleShapeAndType(
    169             shape=shape.as_proto(), dtype=dtype.as_datatype_enum))

AttributeError: 'google.protobuf.pyext._message.RepeatedCompositeCo' object has no attribute 'append'

知道为什么会发生这种情况吗?我是否需要进入 /usr/local/lib/python3.6/dist-packages/tensorflow_core/python/ops/resource_variable_ops.py 文件并进行一些更改?我认为它与某些更新问题有关。关于如何解决它的任何帮助?

如果 运行 直到昨天都还不错,而您没有做任何更改,那么请检查两件事- TF 版本,如果它最近更改了 bc,他们将 'default' TF 版本设置为 1.15.rc 从 1.14.

如果相同则保存此文件并关闭所有 colab windows 甚至您的 chrome 或您使用的任何浏览器然后再次打开并尝试 运行 该文件。

编辑: 上面说了肯定是TF版本的原因。所以恢复到你在模型工作时使用的那个。正如您在下面的评论中提到的,它正在处理版本“dev20191010”,因此回滚到它会解决您的问题。

尝试从文件中打开 'New Python 3 notebook' 并在其中编写代码,这解决了我的问题。

我在 tensorflow(版本 2.2.0-dev20200128)中遇到了同样的错误,并通过升级 protobuf 修复了它(如本 issue 中所述):

pip install -U protobuf==3.8.0

或者,如果您使用的是笔记本(例如 Google Colab 笔记本),请试试这个:

!pip install -U protobuf==3.8.0

我安装了 tensorflow 并遇到了同样的问题,我做了什么:

第 1 步:升级 protobuf:

pip install -U protobuf==3.8.0

第 2 步:关闭所有内容或 python 环境并重新启动它。

今天是2020年4月22日,Tensorflow 2.1好像需要protobuf 3.11.3,所以使用: pip install -U protobuf==3.11.3 为我工作

我遇到了同样的问题。我重新安装了 protobuf = 3.11.3,它再次运行良好。 通过使用:

!pip install -U protobuf==3.11.3

然后也重新启动您的内核。

今天 2020 年 6 月 19 日,TF 版本 2.2.0。我 运行 在 jupyter 笔记本中执行以下命令,然后正确关闭打开的笔记本并关闭 jupyter 服务器,然后重新启动 Anaconda Navigator。终于成功了!!!

Protobuf升级:-

!pip install --upgrade protobuf

今天2020年6月23日,我通过升级tensorboard bt 2.2.2解决了这个问题 感谢您提出的问题

我有一个 运行ning 示例代码,它加载模型并对某些图像输入进行预测。我想从 C# 代码中调用预测,这就是为什么我必须安装一个名为 winmltools 的 ONNX 转换包的原因。我已经安装了 winmltools,并且在我的 python 环境(版本 3.6)上安装后,我开始收到此消息,同时试图 运行 之前的 运行ning python 代码。显然 winmltools 包必须更改了某些 tensorflow 支持包的版本(可能是 protobuf 或其他)。我只是使用“pip install tensorflow”重新安装了 tensorflow,安装过程解决了问题。

简而言之,首先尝试 re-install tensorflow,看看是否能解决您的问题。

我遇到了同样的问题。我卸载了 protobuf,然后重新安装。问题已解决。