AttributeError:“google.protobuf.pyext._message.RepeatedCompositeCo”对象没有属性“附加”

Posted

技术标签:

【中文标题】AttributeError:“google.protobuf.pyext._message.RepeatedCompositeCo”对象没有属性“附加”【英文标题】:AttributeError: 'google.protobuf.pyext._message.RepeatedCompositeCo' object has no attribute 'append' 【发布时间】:2020-02-09 02:26:42 【问题描述】:

我正在 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 文件并制作一些变化 ?我认为它与一些更新问题有关。关于如何解决它的任何帮助?

【问题讨论】:

【参考方案1】:

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

pip install -U protobuf==3.8.0

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

!pip install -U protobuf==3.8.0

【讨论】:

如果要安装某个版本,需要两个连续的等号。例如:pip install -U protobuf==3.8.0【参考方案2】:

如果它直到昨天都运行良好并且您没有更改任何内容,那么请检查两件事 - TF 版本,如果最近更改了 bc,他们将 'default' TF 版本从 1.14 设置为 1.15.rc。

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

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

【讨论】:

TF 版本为:'2.1.0-dev20191011' 你必须使用'dev20191010' 此外,这些夜间构建每天都会更改,因此请小心或回滚到稳定的 2.0 是的,昨天还是同一个版本!实际上,几天前有一个更新,然后由于新 TF 版本中的一些功能损坏,我开始遇到一些问题。我不得不使用:!pip install tf-hub-nightly 和 !pip install tf-nightly-gpu。 今天是 10 月 11 日,昨天是 10 日,所以你昨天一定用过dev20191010。回滚到这个版本并测试。【参考方案3】:

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

【讨论】:

我在笔记本打开时安装了 tf。只需停止 jupyter 并重新启动它即可解决问题【参考方案4】:

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

第 1 步:升级 protobuf:

pip install -U protobuf==3.8.0

第2步:关闭一切或python环境并重新启动它。

【讨论】:

【参考方案5】:

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

【讨论】:

【参考方案6】:

我遇到了同样的问题。我重新安装了 protobuf = 3.11.3 并再次正常工作。 通过使用:

!pip install -U protobuf==3.11.3

然后重启你的内核。

【讨论】:

【参考方案7】:

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

Protobuf 升级:-

!pip install --upgrade protobuf

【讨论】:

【参考方案8】:

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

【讨论】:

【参考方案9】:

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

简而言之,首先尝试重新安装 tensorflow,看看是否能解决您的问题。

【讨论】:

【参考方案10】:

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

【讨论】:

以上是关于AttributeError:“google.protobuf.pyext._message.RepeatedCompositeCo”对象没有属性“附加”的主要内容,如果未能解决你的问题,请参考以下文章

AttributeError:“字节”对象没有属性“告诉”

AttributeError: 'RDD' 对象没有属性 'show'

AttributeError:“NumpyArrayIterator”对象没有属性“类”

AttributeError:模块 'dbus' 没有属性 'lowlevel'

AttributeError:模块'keras'没有属性'initializers'

AttributeError:“会话”对象没有属性“会话”