导入错误:无法导入名为'keras'的模块。

9

在 Jupyter 笔记本中运行以下代码 (Python):

import tensorflow as tf
from tensorflow import keras

我看到这个错误:
ImportError: cannot import name 'keras'

我尝试了其他替代第二个命令的命令,例如(但不限于)

from tensorflow.keras import layers

但总是返回一些错误。我正在使用Jupyter的在线版本,运行print(tf.VERSION)返回1.1.0。我不确定问题是否仅是我拥有错误的版本,还是其他原因。我该怎么解决这个问题?


你使用的是哪个版本的Python? - ohlr
你在虚拟环境中安装了TensorFlow吗? - ohlr
我正在使用Python 3。 - Ronan Venkat
你是否已经安装了Keras?如果你正在使用Windows,可以运行以下命令来检查:python -c "import keras; print(keras.version)" - agent_bean
3个回答

8
我认为你正在使用旧版本的 tensorflow。尝试更新它,例如:
! pip install tensorflow --upgrade

我该如何在在线Jupyter笔记本(JupyterLabs)中完成这个任务? - Ronan Venkat
2
对于Jupyter笔记本,只需在命令前加上一个“!”符号即可。这将使! pip install tensorflow --upgrade命令生效。 - Shubham Panchal

4
您的Tensorflow版本过旧;若要从Tensorflow 1.1中访问Keras,请使用以下代码:
import tensorflow.contrib.keras as keras

对于Sequential,使用以下代码:

from tensorflow.contrib.keras.python.keras.models import Sequential
model = Sequential()

我应该在哪里获取那个消息?我刚刚在JupyterLabs中导入了它,它没有返回错误,但是当我尝试使用model = keras.Sequential()时,它返回了一个错误。 - Ronan Venkat
其他模块呢,比如Flatten和Dense?我只需要导入相应的模块并将Sequential替换为Flatten或Dense吗?有没有一种方法可以不用那么多导入行来实现? - Ronan Venkat
@RonanVenkat 对于layers,你需要用layers替换models。而且,使用你正在使用的Tensorflow版本时,无法避免引入冗长的库文件... - desertnaut
当我尝试这样做时,出现了一个错误,显示“ModuleNotFoundError: No module named 'tensorflow.contrib'”。 - user3367130
@user3367130,请开一个新问题并提供详细信息。 - desertnaut

0

我也无法从tensorflow中导入keras。我遇到了以下错误:

ImportError: cannot import name 'keras' from 'tensorflow' (unknown location)

经过一番搜索,我找到了解决方案here

需要做的就是从目录中删除~(site_package_name)。在我的情况下,它是~ensorflow,它以某种方式阻止了pip安装/升级包。一旦我删除了文件夹,一切都运行得很顺利。删除包后,安装/升级所需的包。

对于那些找不到目录的人,这是我的(仅供参考):C:\Users\veni_\anaconda3\Lib\site-packages

注意:警告本身将显示导致问题的软件包的名称。例如:

 **"WARNING: Ignoring invalid distribution -ensorflow"** 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接