Python “如何修复”;属性错误:模块';tensorflow';没有属性';获取默认图形'&引用;?

Python “如何修复”;属性错误:模块';tensorflow';没有属性';获取默认图形'&引用;?,python,tensorflow,keras,keras-layer,tf.keras,Python,Tensorflow,Keras,Keras Layer,Tf.keras,我正在尝试运行一些代码来创建LSTM模型,但出现错误: AttributeError:模块“tensorflow”没有属性“get\u default\u 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(Den

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

AttributeError:模块“tensorflow”没有属性“get\u default\u 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'])
我发现其他人也有类似的问题,他们更新了tensorflow,它可以正常工作;但我的是最新的,仍然不起作用。我对使用keras和机器学习还不熟悉,所以如果这是一件愚蠢的事情,我道歉

请尝试:

从tensorflow.keras.models导入顺序

而不是


from keras.models import Sequential

结果表明我使用了错误的版本(2.0.0a0),因此我重置为最新的稳定版本(1.13.1)并正常工作。

降级将解决问题,但如果要使用最新版本,则必须尝试以下代码:
从tensorflow导入keras
和'
从tensorflow.python.keras导入后端为k

这是我的工作

这也发生在我身上。原因是您的tensorflow版本。尝试获取旧版本的tensorflow。另一个问题可能是您的项目中有一个名为tensorflow.py的python脚本。

是的,此版本的tensorflow tensorflow==2.0.0的代码无法使用。移动到2.0.0之前的版本会有所帮助。

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

有关详细信息,请查看keras文档:

使用以下命令:

tf.compat.v1.disable_eager_execution()
print(tf.compat.v1.get_default_graph())

它适用于tensorflow 2.0,我也有同样的问题。我试过了

from tensorflow.keras.models import Sequential

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

$conda update python
$conda update keras
$conda update tensorflow

我的tensorflow版本是2.1.0;我的keras版本是2.3.1;我的python版本是3.6.10。 在我取消安装keras并重新安装keras之前,一切都不起作用:

pip uninstall keras
pip install keras --upgrade

对于TF2.1.0,我将更改为
tf.compat.v1.get\u default\u graph()


为了解决这个问题,我使用了下面的代码:

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
import numpy

假设引用此线程的人将使用越来越多的tensorflow 2:

Tensorflow 2进一步集成了keras api,因为keras的设计/开发非常明智。如果您使用的是tensorflow 2,答案非常简单,如下所述:

这就是你改变的方式,你可以使用keras官方页面上的MNIST之类的东西,只替换
tensorflow.keras
,而不是
keras
,并在gpu上运行它

from __future__ import print_function
import tensorflow
from tensorflow.keras.datasets import mnist
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout, Flatten
from tensorflow.keras.layers import Conv2D, MaxPooling2D
from tensorflow.keras import backend as K

batch_size = 1024
num_classes = 10
epochs = 12

# input image dimensions
img_rows, img_cols = 28, 28

# the data, split between train and test sets
(x_train, y_train), (x_test, y_test) = mnist.load_data()

if K.image_data_format() == 'channels_first':
    x_train = x_train.reshape(x_train.shape[0], 1, img_rows, img_cols)
    x_test = x_test.reshape(x_test.shape[0], 1, img_rows, img_cols)
    input_shape = (1, img_rows, img_cols)
else:
    x_train = x_train.reshape(x_train.shape[0], img_rows, img_cols, 1)
    x_test = x_test.reshape(x_test.shape[0], img_rows, img_cols, 1)
    input_shape = (img_rows, img_cols, 1)

x_train = x_train.astype('float32')
x_test = x_test.astype('float32')
x_train /= 255
x_test /= 255
print('x_train shape:', x_train.shape)
print(x_train.shape[0], 'train samples')
print(x_test.shape[0], 'test samples')

# convert class vectors to binary class matrices
y_train = tensorflow.keras.utils.to_categorical(y_train, num_classes)
y_test = tensorflow.keras.utils.to_categorical(y_test, num_classes)

model = Sequential()
model.add(Conv2D(32, kernel_size=(3, 3),
             activation='relu',
             input_shape=input_shape))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(num_classes, activation='softmax'))

model.compile(loss=tensorflow.keras.losses.categorical_crossentropy,
          optimizer=tensorflow.keras.optimizers.Adadelta(),
          metrics=['accuracy'])

model.fit(x_train, y_train,
      batch_size=batch_size,
      epochs=epochs,
      verbose=1,
      validation_data=(x_test, y_test))
score = model.evaluate(x_test, y_test, verbose=0)
print('Test loss:', score[0])
print('Test accuracy:', score[1])

是的,因为您使用的是tensorflow的更新版本,即tensorflow==2.0,所以它不起作用,旧版本的tensorflow可能会有所帮助。 我有同样的问题,但我用下面的代码修复了它

尝试:

相反:

from keras.models import Sequential
from keras.layers import Dense
from keras.layers import Dropout

将所有
keras.something.something
替换为
tensorflow.keras.something
,并使用:

import tensorflow as tf
from tensorflow.keras import backend as k

对于TensorFlow 2.0,使用与TensorFlow捆绑的keras

尝试将
keras.models
替换为
tensorflow.python.keras.models
tensorflow.keras.models

from tensorflow.python.keras.models import Sequential

from tensorflow.python.keras.layers.core import Dense, Activation
这应该可以解决问题

请尽量简洁

首先-->

然后-->


由于tensorflow版本的更改而发生: 替换


这对我有用。。。正在hrnetv2上工作。。这对我来说很有效。请使用下面的导入

from tensorflow.keras.layers import Input

这不是一个解决方案,您回到了keras的早期版本,并使用了该版本的实现@irezwi的答案是与TF2.0一起使用的,只是为了补充一点解释:TensorFlow 2.0内置了Keras;无需将KERA单独加载到您的环境中;只需更改@irezwi显示的导入语句。您如何降级?您好,欢迎来到Stackoverflow,谢谢您的回复!请添加您认为可能导致错误的原因以及您的解决方案背后的想法,以便其他人能够理解基本概念并在类似情况下找到解决方案!另外,请使用格式选项,例如,使cod示例脱颖而出!您可以使用编辑区域顶部的图标,也可以通过单击编辑区域右上角的帮助图标获得标记文档。这适用于我的情况,谢谢。欢迎使用堆栈溢出!请确保您的解决方案尚未在其他答案中提出,如。
from __future__ import print_function
import tensorflow
from tensorflow.keras.datasets import mnist
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout, Flatten
from tensorflow.keras.layers import Conv2D, MaxPooling2D
from tensorflow.keras import backend as K

batch_size = 1024
num_classes = 10
epochs = 12

# input image dimensions
img_rows, img_cols = 28, 28

# the data, split between train and test sets
(x_train, y_train), (x_test, y_test) = mnist.load_data()

if K.image_data_format() == 'channels_first':
    x_train = x_train.reshape(x_train.shape[0], 1, img_rows, img_cols)
    x_test = x_test.reshape(x_test.shape[0], 1, img_rows, img_cols)
    input_shape = (1, img_rows, img_cols)
else:
    x_train = x_train.reshape(x_train.shape[0], img_rows, img_cols, 1)
    x_test = x_test.reshape(x_test.shape[0], img_rows, img_cols, 1)
    input_shape = (img_rows, img_cols, 1)

x_train = x_train.astype('float32')
x_test = x_test.astype('float32')
x_train /= 255
x_test /= 255
print('x_train shape:', x_train.shape)
print(x_train.shape[0], 'train samples')
print(x_test.shape[0], 'test samples')

# convert class vectors to binary class matrices
y_train = tensorflow.keras.utils.to_categorical(y_train, num_classes)
y_test = tensorflow.keras.utils.to_categorical(y_test, num_classes)

model = Sequential()
model.add(Conv2D(32, kernel_size=(3, 3),
             activation='relu',
             input_shape=input_shape))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(num_classes, activation='softmax'))

model.compile(loss=tensorflow.keras.losses.categorical_crossentropy,
          optimizer=tensorflow.keras.optimizers.Adadelta(),
          metrics=['accuracy'])

model.fit(x_train, y_train,
      batch_size=batch_size,
      epochs=epochs,
      verbose=1,
      validation_data=(x_test, y_test))
score = model.evaluate(x_test, y_test, verbose=0)
print('Test loss:', score[0])
print('Test accuracy:', score[1])
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras.layers import Dropout
from keras.models import Sequential
from keras.layers import Dense
from keras.layers import Dropout
import tensorflow as tf
from tensorflow.keras import backend as k
from tensorflow.python.keras.models import Sequential

from tensorflow.python.keras.layers.core import Dense, Activation
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
model = keras.Sequential(
    [
        layers.Dense(layers.Dense(32, input_dim=784)),
        layers.Dense(activation="relu"),
        layers.Dense(LSTM(17))

    ]
)
model.add(layers.Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer=tf.keras.optimizers.Adam(0.01), metrics=['accuracy'])
tf.get_default_graph()
tf.compat.v1.get_default_graph()
!pip uninstall tensorflow 
!pip install tensorflow==1.14
from tensorflow.keras.layers import Input