关于Python第三方库keras的错误:module ‘keras.utils.generic_utils’ has no attribute ‘populate_dict_with_module_objects’
我是Python 3.7.4的版本,Keras版本是2.4.3。使用pip install keras时没有任何问题,但当导入使用import keras导入库时,会出现如下错误:
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
import keras
File "D:\python\lib\site-packages\keras\__init__.py", line 20, in <module>
from . import initializers
File "D:\python\lib\site-packages\keras\initializers\__init__.py", line 124, in <module>
populate_deserializable_objects()
File "D:\python\lib\site-packages\keras\initializers\__init__.py", line 82, in populate_deserializable_objects
generic_utils.populate_dict_with_module_objects(
AttributeError: module 'keras.utils.generic_utils' has no attribute 'populate_dict_with_module_objects'
这是由于keras下的utils中generic_utils缺少部分方法导致的,我们可以访问github搜索这些函数来补全,我在最后会补上修改过后的文件,直接替换相应的文件即可。
首先进入目录python\Lib\site-packages\keras\utils,找到generic_utils文件,用记事本打开,将下面的代码复制到最后。
def populate_dict_with_module_objects(target_dict, modules, obj_filter):
for module in modules:
for name in dir(module):
obj = getattr(module, name)
if obj_filter(obj):
target_dict[name] = obj
重新使用import keras,出现其他错误。
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
import keras
File "D:\python\lib\site-packages\keras\__init__.py", line 20, in <module>
from . import initializers
File "D:\python\lib\site-packages\keras\initializers\__init__.py", line 124, in <module>
populate_deserializable_objects()
File "D:\python\lib\site-packages\keras\initializers\__init__.py", line 89, in populate_deserializable_objects
LOCAL.ALL_OBJECTS[generic_utils.to_snake_case(key)] = value
AttributeError: module 'keras.utils.generic_utils' has no attribute 'to_snake_case'
仍然是刚才的文件,继续复制以下代码到最后。
def to_snake_case(s):
return ''.join(['_' + ch.lower() if ch.isupper() else ch for ch in str(s)]).lstrip('_')
成功导入keras库,没有报错。
generic_utils.py文件链接:https://pan.baidu.com/s/1fzdcCjmYZuAoOw-Lwks80Q
提取码:zook