Hoe te fixeren “AttributeError: Module ‘TensorFlow’ heeft geen attribuut ‘get_default_graph’?

Ik probeer een code uit te voeren om een ​​LSTM-model te maken, maar ik krijg een foutmelding:

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

Mijn code is als volgt:

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'])

Ik heb iemand anders gevonden met een vergelijkbaar probleem en ze hebben Tensorflow bijgewerkt en het werkt; Maar de mijne is up-to-date en werkt nog steeds niet. Ik ben nieuw voor het gebruik van Keras en Machine Learning, dus ik bied mijn excuses aan als dit iets dom is!


Antwoord 1, Autoriteit 100%

Probeer alstublieft:

from tensorflow.keras.models import Sequential

in plaats van

from keras.models import Sequential


Antwoord 2, Autoriteit 35%

voor TF 2.1.0 Ik gebruikte tf.compat.v1.get_default_graph()– b.v:

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)

Antwoord 3, Autoriteit 30%

Vervang voor de laatste TensorFlow 2 Vervang de bovenstaande code door onderstaande code met enkele wijzigingen

Controleer voor details Keras Documentation:
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'])

Antwoord 4, autoriteit 15%

Ik had hetzelfde probleem. Ik heb geprobeerd

from tensorflow.keras.models import Sequential

en

from keras.models import Sequential

geen van hen werkt. Dus ik update tensorflow, keras en python:

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

of

pip install --upgrade tensorflow
pip install --upgrade keras
pip install --upgrade python

Mijn tensorflow-versie is 2.1.0; mijn keras-versie is 2.3.1; mijn python-versie is 3.6.10.
Niets werkt totdat ik keras verwijder en keras opnieuw installeer:

pip uninstall keras
pip install keras --upgrade

Antwoord 5, autoriteit 15%

Het treedt op als gevolg van wijzigingen in de tensorflow-versie ::
Vervangen

tf.get_default_graph()

door

tf.compat.v1.get_default_graph()

Antwoord 6, autoriteit 12%

Blijkt dat ik de verkeerde versie (2.0.0a0) gebruikte, dus ik reset naar de nieuwste stabiele versie (1.13.1) en het werkt.


Antwoord 7, Autoriteit 8%

Vervang alle keras.something.somethingmet tensorflow.keras.something, en gebruik:

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

Antwoord 8, Autoriteit 2%

Downgrading repareert het probleem, maar als u de nieuwste versie wilt gebruiken, moet u deze code proberen:
from tensorflow import kerasEN ‘from tensorflow.python.keras import backend as k
Dat is werk voor mij


Antwoord 9, Autoriteit 2%

Gebruik het volgende:

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

Het werkt voor TensorFlow 2.0


Antwoord 10, Autoriteit 2%

Ja, het werkt niet omdat u de bijgewerkte versie van TensorFlow gebruikt, ie TensorFlow == 2.0, de oudere versie van TensorFlow kan helpen.
Ik had hetzelfde probleem, maar ik heb het opgelost met behulp van de volgende code.

Probeer:

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

In plaats daarvan:

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

Antwoord 11, Autoriteit 2%

Om het probleem op te lossen, gebruikte ik de onderstaande code:

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

Antwoord 12

Dit is mij ook overkomen. De reden is uw tensorflow-versie. Probeer een oudere versie van tensorflow te krijgen. Een ander probleem kan zijn dat je een python-script met de naam tensorflow.py in je project hebt.


Antwoord 13

Ja, de code werkt niet met deze versie van tensorflow tensorflow == 2.0.0 . verhuizen naar versie ouder dan 2.0.0 zal helpen.


Antwoord 14

Ervan uitgaande dat mensen die naar deze thread verwijzen, steeds meer tensorflow 2 zullen gebruiken:

Tensorflow 2 integreert verdere keras api, aangezien keras zeer verstandig is ontworpen/ontwikkeld. Het antwoord is heel eenvoudig als je tensorflow 2 gebruikt, zoals ook hier wordt beschreven :

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Activation, LSTM
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=tensorflow.keras.losses.binary_crossentropy, optimizer=tensorflow.keras.optimizers.Adam(), metrics=['accuracy'])

en zo verander je dat je iets als MNIST van de officiële keras-pagina zou gebruiken door gewoon tensorflow.keraste vervangen in plaats van kerasen het ook op gpu uit te voeren;

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])

Antwoord 15

Gebruik voor TensorFlow 2.0 Keras gebundeld met TensorFlow.

Probeer het vervangen van keras.modelsmet tensorflow.python.keras.modelsof tensorflow.keras.models:

from tensorflow.python.keras.models import Sequential
from tensorflow.python.keras.layers.core import Dense, Activation

Dit zou het probleem moeten oplossen.


Antwoord 16

!pip uninstall tensorflow 
!pip install tensorflow==1.14

Dit werkte voor mij … WERKEN AAN HRNETV2 .. TY


Antwoord 17

Dit werkte voor mij. Gebruik alstublieft de onderstaande import

from tensorflow.keras.layers import Input

Antwoord 18

Probeer een beknopt te zijn!

First – & GT;

import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers

dan – & gt;

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'])

en voila !!

Other episodes