AttributeError: 'google.protobuf.pyext._message.RepeatedCompositeCo' 对象没有属性 '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 文件并进行一些更改?我认为它与某些更新问题有关。关于如何解决它的任何帮助?

原文由 Pe Dro 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.8k
2 个回答

如果它在昨天之前运行良好并且您没有更改任何内容,那么请检查两件事 - Th TF 版本,如果它最近更改了 bc,他们将“默认”TF 版本从 1.14 设置为 1.15.rc。

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

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

原文由 Rishabh Sahrawat 发布,翻译遵循 CC BY-SA 4.0 许可协议

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

 pip install -U protobuf==3.8.0

或者,如果您使用的是笔记本(如 Google Colab 笔记本),请尝试以下操作:

 !pip install -U protobuf==3.8.0

原文由 Masoud Maleki 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题