如何修复“ AttributeError:模块'tensorflow'没有属性'get_default_graph'”?

Ali*_*ice 8 python keras tensorflow keras-layer tf.keras

我试图运行一些代码来创建LSTM模型,但出现错误:

AttributeError: module 'tensorflow' has no attribute 'get_default_graph'

我的代码如下:

from keras.models import Sequential

model = Sequential()
model.add(Dense(32, input_dim=784))
model.add(Activation('relu'))
model.add(LSTM(17))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
Run Code Online (Sandbox Code Playgroud)

我发现其他人也有类似的问题,他们更新了tensorflow并成功了。但是我的是最新的,但仍然无法正常工作。我是新来的使用keras和机器学习的人,因此如果这很愚蠢,我深表歉意!

pal*_*lom 14

对于 tf 2.1.0 我使用tf.compat.v1.get_default_graph()- 例如:

import tensorflow as tf
sess = tf.compat.v1.Session(graph=tf.compat.v1.get_default_graph(), config=session_conf)
tf.compat.v1.keras.backend.set_session(sess)

Run Code Online (Sandbox Code Playgroud)


小智 12

对于最新的 tensorflow 2,将上面的代码替换为下面的代码,并进行一些更改

有关详细信息,请查看 keras 文档:https ://www.tensorflow.org/guide/keras/overview

import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
from tensorflow.keras.models import Sequential, load_model

model = tf.keras.Sequential()
model.add(layers.Dense(32, input_dim=784))
model.add(layers.Activation('relu'))
model.add(layers.LSTM(17))
model.add(layers.Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer=tf.keras.optimizers.Adam(0.01), metrics=['accuracy'])
Run Code Online (Sandbox Code Playgroud)


ire*_*zwi 8

请尝试from tensorflow.keras.models import Sequential代替from keras.models import Sequential


小智 6

我有同样的问题。我试过

from tensorflow.keras.models import Sequential
Run Code Online (Sandbox Code Playgroud)

from keras.models import Sequential
Run Code Online (Sandbox Code Playgroud)

它们都不起作用。所以我更新了 tensorflow、keras 和 python:

$conda update python
$conda update keras
$conda update tensorflow
Run Code Online (Sandbox Code Playgroud)

或者

pip install --upgrade tensorflow
pip install --upgrade keras
pip install --upgrade python
Run Code Online (Sandbox Code Playgroud)

我的 tensorflow 版本是 2.1.0;我的 keras 版本是 2.3.1;我的 python 版本是 3.6.10。在我卸载 keras 并重新安装 keras 之前,什么都不起作用:

pip uninstall keras
pip install keras --upgrade
Run Code Online (Sandbox Code Playgroud)


小智 6

它是由于 tensorflow 版本的变化而发生的 :: Replace

tf.get_default_graph()
Run Code Online (Sandbox Code Playgroud)

经过

tf.compat.v1.get_default_graph()
Run Code Online (Sandbox Code Playgroud)


Ali*_*ice 5

结果我使用了错误的版本 (2.0.0a0),所以我重置到最新的稳定版本 (1.13.1) 并且它可以工作。

  • 补充一点解释:TensorFlow 2.0 内置了 Keras;无需将 Keras 单独加载到您的环境中;只需更改 @irezwi 所示的导入语句即可。 (2认同)

小智 5

全部替换keras.something.somethingtensorflow.keras.something, 并使用:

import tensorflow as tf
from tensorflow.keras import backend as k
Run Code Online (Sandbox Code Playgroud)