AttributeError: Modul „tensorflow“ hat kein Attribut „get_default_graph“ in tensorflow
Ich erhalte den folgenden Fehler in meinem Code.
import mtcnn
# print version
print(mtcnn.__version__)
# demonstrate face detection on 5 Celebrity Faces Dataset
from os import listdir
from PIL import Image
from numpy import asarray
from matplotlib import pyplot
from mtcnn.mtcnn import MTCNN
print("MTCNN: {}".format(mtcnn.__version__))
import tensorflow as tf
from tensorflow import keras
# extract a single face from a given photograph
def extract_face(filename, required_size=(160, 160)):
# load image from file
image = Image.open(filename)
# convert to RGB, if needed
image = image.convert('RGB')
# convert to array
pixels = asarray(image)
# create the detector, using default weights
detector = MTCNN()
# detect faces in the image
results = detector.detect_faces(pixels)
# extract the bounding box from the first face
x1, y1, width, height = results[0]['box']
# bug fix
x1, y1 = abs(x1), abs(y1)
x2, y2 = x1 + width, y1 + height
# extract the face
face = pixels[y1:y2, x1:x2]
# resize pixels to the model size
image = Image.fromarray(face)
image = image.resize(required_size)
face_array = asarray(image)
return face_array
# specify folder to plot
#folder = '5-celebrity-faces-dataset/train/ben_afflek/'
folder = '5-celebrity-faces-dataset/train/ben_afflek'
i = 1
# enumerate files
for filename in listdir(folder):
# path
path = folder + '/' + filename
# get face
face = extract_face(path)
print(i, face.shape)
# plot
pyplot.subplot(2, 7, i)
pyplot.axis('off')
pyplot.imshow(face)
i += 1
pyplot.show()
Fehler:
anaconda3\envs\py3\lib\site-packages\keras\backend\tensorflow_backend.py", Zeile 68, in get_uid graph = tf.get_default_graph()
AttributeError: Modul „tensorflow“ hat kein Attribut „get_default_graph“
Ich habe verschiedene Importe ausprobiert, aber nichts funktioniert. Es scheint, dass dieser Fehler üblich ist, aber ich finde nichts, was mein Problem löst.
Antworten
In der Antwort hier löst der Import von Keras aus Tensorflow das Problem, wie Sie es getan haben.
Das Problem in Ihrem Fall ist jedoch, dass das MTCNN auf reinen Keras anstelle von TensorFlow funktioniert, sodass die Tatsache, dass Sie Ihre Keras "main.py" aus TensorFlow laden, keine Auswirkung hat. Sie müssen entweder die Tensorflow-Version herunterstufen oder Sie ändern jeden Import in MTCNN, was leider nicht garantiert funktioniert.