ModuleNotFoundError: No module named ‘tensorflow.keras’报错信息的解决方法

  • Post author:
  • Post category:其他

在使用深度学习方法,训练人工神经网络模型比如EfficientNet的时候,由于keras库等文件安装目录不同的原因,因为不兼容可能会报出各种各样的错误,此系列专注记录本人在训练时候遇到的各种错误解决方法,供大家参考和学习。

错误信息

话不多说,首先抛出错误信息:

Traceback (most recent call last):
  File "**/training.py", line 4, in <module>
    from tensorflow.keras import models
ModuleNotFoundError: No module named 'tensorflow.keras'

报错信息是个好东西,你要学会如何从报错信息中发掘出有用的东西来。

此错误信息对应的代码块如下:

from tensorflow.keras import models
from tensorflow.keras import layers
from tensorflow.keras import optimizers
from tensorflow.keras.preprocessing.image import ImageDataGenerator

解决方法

我们发现在引包的时候出现了上述的这个错误,是因为keras库安装目录不兼容的原因,我们先找到自己keras的本地安装目录,这里分别就Windows用户和Linux用户介绍方法如下:

适用于Windows用户的方法

我们不妨先新建一个python文件keras_dir.py,用于输出keras的本地安装目录,在新建的python文件中输入如下代码,即可查询keras的本地目录所在(需要注意的是下面这段代码中的path两侧均为双下划线)。

from tensorflow import keras
print(keras.__path__)

运行keras_dir.py后显示输出如下:

D:\Anaconda3-5.1.0\envs\tensorflow-gpu\python.exe  **/keras_dir.py
['D:\\Anaconda3-5.1.0\\envs\\tensorflow-gpu\\lib\\site-packages\\tensorflow\\tools\\api\\generator\\api\\keras']

Process finished with exit code 0

通过输出的信息,我们可以得知keras是安装在了本地磁盘中D盘下的D:\Anaconda3-5.1.0\envs\tensorflow-gpu\Lib\site-packages\tensorflow\tools\api\generator\api\keras这个目录中。

仔细观察这个目录路径,我们可以发现keras并不是直接在tensorflow目录下的,在tensorflow和keras之间还隔着几个目录,所以我们就可以通过正确输入keras的目录位置来成功调用keras库了,文章最开始的keras调用语句修改后如下:

from tensorflow.tools.api.generator.api.keras import models
from tensorflow.tools.api.generator.api.keras import layers
from tensorflow.tools.api.generator.api.keras import optimizers
from tensorflow.tools.api.generator.api.keras.preprocessing.image import ImageDataGenerator

修改后再次运行,就可以发现不会再出现这个报错信息了。

适用于Linux用户的方法

同样的,依旧是先创建python文件keras_dir.py,运行keras_dir.py后显示输出如下:

[**@** EfficientNet]# python keras_dir.py
['/usr/local/python3/lib/python3.6/site-packages/tensorflow/_api/v1/keras']

可以看到keras的安装目录,我们按照目录来修改程序调用keras库的语句:

from tensorflow._api.v1.keras import models
from tensorflow._api.v1.keras import layers
from tensorflow._api.v1.keras import optimizers
from tensorflow._api.v1.keras.preprocessing.image import ImageDataGenerator

至此,我们就成功解决了ModuleNotFoundError: No module named 'tensorflow.keras'这个错误。

写到这里,差不多本文就要结束了,如果有问题可以在下方留言区留言交流。如果我的这篇文章帮助到了你,那我也会感到很高兴,一个人能走多远,在于与谁同行。


版权声明:本文为weixin_43051346原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。