AttributeError: modul 'tensorflow' tidak memiliki atribut 'get_default_graph' di tensorflow
Saya mendapatkan kesalahan berikut dalam kode saya.
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()
Kesalahan:
anaconda3 \ envs \ py3 \ lib \ site-packages \ keras \ backend \ tensorflow_backend.py ", baris 68, dalam get_uid graph = tf.get_default_graph ()
AttributeError: modul 'tensorflow' tidak memiliki atribut 'get_default_graph'
Saya mencoba beberapa impor berbeda, tetapi tidak ada yang berhasil. Tampaknya kesalahan ini biasa terjadi, tetapi saya tidak menemukan apa pun yang dapat menyelesaikan masalah saya.
Jawaban
Dalam jawabannya di sini, impor keras dari tensorflow, seperti yang Anda lakukan, memecahkan masalah.
Tetapi masalah dalam kasus Anda adalah bahwa MTCNN bekerja pada Keras murni dan bukan pada TensorFlow, jadi fakta bahwa Anda memuat keras "main.py" dari tensorflow tidak memiliki efek apa pun. Anda juga perlu menurunkan versi tensorflow atau memodifikasi setiap impor di MTCNN yang sayangnya tidak dijamin akan berfungsi.