AttributeError: 模块 'tensorflow.python.keras.utils.generic_utils' 没有属性 'populate_dict_with_module_objects'

amr*_*eim 27 python keras tensorflow

当我导入 keras 时,即使昨天工作正常,也会弹出上述错误。

如何解决此错误?

我在 Windows 10 上工作,我的 keras 版本是:2.2.4 我的 tensorflow 版本是:2.2.0rc2

完整的错误回溯如下所示:

Traceback (most recent call last):

    from keras import models
  File "C:\Users\world\AppData\Local\Programs\Python\Python38\lib\site-packages\keras\__init__.py", line 3, in <module>

    from . import utils
  File "C:\Users\world\AppData\Local\Programs\Python\Python38\lib\site-packages\keras\utils\__init__.py", line 6, in <module>

    from . import conv_utils

  File "C:\Users\world\AppData\Local\Programs\Python\Python38\lib\site-packages\keras\utils\conv_utils.py", line 9, in <module>

    from .. import backend as K

  File "C:\Users\world\AppData\Local\Programs\Python\Python38\lib\site-packages\keras\backend\__init__.py", line 1, in <module>

    from .load_backend import epsilon

  File "C:\Users\world\AppData\Local\Programs\Python\Python38\lib\site-packages\keras\backend\load_backend.py", line 90, in <module>

    from .tensorflow_backend import *

  File "C:\Users\world\AppData\Local\Programs\Python\Python38\lib\site-packages\keras\backend\tensorflow_backend.py", line 5, in <module>

    import tensorflow as tf

  File "C:\Users\world\AppData\Local\Programs\Python\Python38\lib\site-packages\tensorflow\__init__.py", line 41, in <module>

    from tensorflow.python.tools import module_util as _module_util
  File "C:\Users\world\AppData\Local\Programs\Python\Python38\lib\site-packages\tensorflow\python\__init__.py", line 84, in <module>

    from tensorflow.python import keras

  File "C:\Users\world\AppData\Local\Programs\Python\Python38\lib\site-packages\tensorflow\python\keras\__init__.py", line 27, in <module>

    from tensorflow.python.keras import models

  File "C:\Users\world\AppData\Local\Programs\Python\Python38\lib\site-packages\tensorflow\python\keras\models.py", line 24, in <module>

    from tensorflow.python.keras import metrics as metrics_module

  File "C:\Users\world\AppData\Local\Programs\Python\Python38\lib\site-packages\tensorflow\python\keras\metrics.py", line 37, in <module>

    from tensorflow.python.keras.engine import base_layer

  File "C:\Users\world\AppData\Local\Programs\Python\Python38\lib\site-packages\tensorflow\python\keras\engine\base_layer.py", line 51, in <module>

    from tensorflow.python.keras import initializers

  File "C:\Users\world\AppData\Local\Programs\Python\Python38\lib\site-packages\tensorflow\python\keras\initializers\__init__.py", line 127, in <module>

    populate_deserializable_objects()
  File "C:\Users\world\AppData\Local\Programs\Python\Python38\lib\site-packages\tensorflow\python\keras\initializers\__init__.py", line 85, in populate_deserializable_objects
    generic_utils.populate_dict_with_module_objects(
AttributeError: module 'tensorflow.python.keras.utils.generic_utils' has no attribute 'populate_dict_with_module_objects'
Run Code Online (Sandbox Code Playgroud)

THE*_*KER 15

我遇到了同样的问题,我已经通过将 tensorflow 版本降级到 2.1.0 成功解决了这个问题。

pip install tensorflow==2.1.0
Run Code Online (Sandbox Code Playgroud)

  • 当我使用它时,我收到此错误:`错误:找不到满足tensorflow == 2.4.1要求的版本(来自版本:2.5.0rc0,2.5.0rc1)错误:找不到tensorflow == 2.4的匹配分布.1` 我可以帮忙吗? (5认同)
  • @manarinian 使用最新版本:这个 `2.5.0rc0` 或 `2.5.0rc1` 版本 https://pypi.org/project/tensorflow-cpu/#history (3认同)

小智 15

更改from keras import modelsfrom tensorflow.keras import models
tensorflow 2.5.0 为我解决了这个问题


小智 11

改变了 from keras.utils import _____

from tensorflow.python.keras.utils import _____

这在使用 TensorFlow 2.5.0 时对我有用


Muh*_*han 6

请从此链接(第 827 至 832 行)复制“populate_dict_with_module_objects”函数并将其添加到“generic_utils.py”

  • 也许不是一个长期可重现的解决方案! (4认同)
  • 确切地!链接的文件甚至没有链接到提交,并且第 827 行现在是一个文档字符串(“””)。 (2认同)

小智 5

我在使用 Python 3.9 和 Tensorflow 2.5 时遇到了同样的问题。我的问题是这两个还不兼容,因此,解决方案是安装 python 3.8,并可能将 Tensorflow 2.5 降级到 Tensorflow 2.4。


小智 5

I've gotten around this by uninstalling Keras and changing anything I import from Keras to instead import from tensorflow.keras

So this:

    from keras.preprocessing.image import load_img
    from keras.preprocessing.image import img_to_array
    from keras.applications.vgg16 import preprocess_input
    from keras.applications.vgg16 import decode_predictions
    from keras.applications.vgg16 import VGG16
Run Code Online (Sandbox Code Playgroud)

became this:

    from tensorflow.keras.preprocessing.image import load_img
    from tensorflow.keras.preprocessing.image import img_to_array
    from tensorflow.keras.applications.vgg16 import preprocess_input
    from tensorflow.keras.applications.vgg16 import decode_predictions
    from tensorflow.keras.applications.vgg16 import VGG16
Run Code Online (Sandbox Code Playgroud)

and then I didn't have to amend the rest of my work