pythonで顔識別アプリを作成しており、
Kerasで学習モデルを作成しているのですが、
学習モデルのファイルをターミナルで実行した所、
下記のエラーコードが出ました。
発生している問題・エラーメッセージ
AttributeError: module 'tensorflow' has no attribute 'get_default_graph'
import os from keras.applications.vgg16 import VGG16 from keras.preprocessing.image import ImageDataGenerator from keras.models import Sequential, Model from keras.layers import Input, Activation, Dropout, Flatten, Dense from keras.preprocessing.image import ImageDataGenerator from keras import optimizers import numpy as np import time # 分類するクラス classes = ["akimoto","ikuta","saito","shiraishi","hori"] nb_classes = len(classes) #画像の大きさを設定 img_width, img_height = 150, 150 # トレーニング用とバリデーション用の画像格納先 train_data_dir = '/content/gdrive/My Drive/Colad Notebooks/menber' validation_data_dir = '/content/gdrive/My Drive/Colad Notebooks/test' #トレーニングデータ用の画像数 nb_train_samples = 7000 #バリデーション用の画像数 nb_validation_samples = 1000 #バッチサイズ batch_size = 100 #エポック数 nb_epoch = 20 # トレーンング用、バリデーション用データを生成するジェネレータ作成 train_datagen = ImageDataGenerator( rescale=1.0 / 255,) validation_datagen = ImageDataGenerator(rescale=1.0 / 255) train_generator = train_datagen.flow_from_directory( train_data_dir, target_size=(img_width, img_height), color_mode='rgb', classes=classes, class_mode='categorical', batch_size=batch_size, shuffle=True) validation_generator = validation_datagen.flow_from_directory( validation_data_dir, target_size=(img_width, img_height), color_mode='rgb', classes=classes, class_mode='categorical', batch_size=batch_size, shuffle=True) # VGG16のロード。FC層は不要なので include_top=False input_tensor = Input(shape=(img_width, img_height, 3)) vgg16 = VGG16(include_top=False, weights='imagenet', input_tensor=input_tensor) # VGG16の図の緑色の部分(FC層)の作成 top_model = Sequential() top_model.add(Flatten(input_shape=vgg16.output_shape[1:])) top_model.add(Dense(256, activation='relu')) top_model.add(Dropout(0.5)) top_model.add(Dense(nb_classes, activation='softmax')) # VGG16とFC層を結合してモデルを作成(完成図が上の図) vgg_model = Model(input=vgg16.input, output=top_model(vgg16.output)) # VGG16の図の青色の部分は重みを固定(frozen) for layer in vgg_model.layers[:15]: layer.trainable = False # 多クラス分類を指定 vgg_model.compile(loss='categorical_crossentropy', optimizer=optimizers.SGD(lr=1e-3, momentum=0.9), metrics=['accuracy']) # Fine-tuning history = vgg_model.fit_generator( train_generator, samples_per_epoch=nb_train_samples, nb_epoch=nb_epoch, validation_data=validation_generator, nb_val_samples=nb_validation_samples) vgg_model.save('model.h5') # 学習結果を描写 import matplotlib.pyplot as plt #acc, val_accのプロット plt.plot(history.history["accuracy"], label="accuracy", ls="-", marker="o") plt.plot(history.history["val_accuracy"], label="val_accuracy", ls="-", marker="x") plt.ylabel("accuracy") plt.xlabel("epoch") plt.legend(loc="best") #Final.pngという名前で、結果を保存 plt.savefig('Final.png') plt.show() コード
試したこと
tensorflow(2.2.0)は最新のバージョンにしました。
補足情報(FW/ツールのバージョンなど)
mac python3.7
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー