Pythonで機械学習のコードを書いているのですが、
下記のエラーが発生しており、うまく実行できません。
予測結果を取得 のところで、
AttributeError: 'Sequential' object has no attribute 'predict_classes'
というエラーがでます。
対処方法わかる方がいらっしゃれば教えていただけますでしょうか。
コードは下記の通りです。
よろしくお願いいたします。
python
1 2# 予測結果を取得 3y_pred = model.predict_classes(X_test) 4 5# 混同行列を作成pa 6cnf_matrix = confusion_matrix(y_test, y_pred) 7 8# 混同行列を描画 9sns.heatmap(cnf_matrix, annot=True, fmt='d', cmap='summer') 10plt.xlabel("prediction") 11plt.ylabel("target") 12plt.show() 13
python
1--------------------------------------------------------------------------- 2AttributeError Traceback (most recent call last) 3<ipython-input-131-3f14d059f4b0> in <module>() 4 1 # 予測結果を取得 5----> 2 y_pred = model.predict_classes(X_test) 6 3 7 4 # 混同行列を作成 8 5 cnf_matrix = confusion_matrix(y_test, y_pred) 9 10AttributeError: 'Sequential' object has no attribute 'predict_classes'
Python
1# 数値計算用ライブラリ numpy をインポート 2import numpy as np 3 4# データフレームを提供するライブラリ pandas をインポート 5import pandas as pd 6 7# 機械学習用ライブラリ sklearn(scikit-learn)内にあるライブラリ から 8# モデル構築(訓練用)/検証データ分割用メソッド train_test_split をインポート 9from sklearn.model_selection import train_test_split 10 11# 自分のデータを読み込むために便利なメソッドをインポート 12import os 13import re 14from tensorflow.keras.preprocessing.image import array_to_img, img_to_array, load_img 15 16# ディープラーニング用フレームワーク、TensorFlow のラッパーである 17# keras をインポート 18from tensorflow.keras.models import Sequential, Model, load_model 19from tensorflow.keras.layers import Dense, Conv2D, MaxPool2D, Flatten, Dropout, BatchNormalization, Activation 20from tensorflow.keras.optimizers import Adam 21from tensorflow.keras.datasets import cifar10 22from tensorflow.keras.callbacks import ModelCheckpoint, EarlyStopping 23from tensorflow.keras.preprocessing.image import ImageDataGenerator 24 25# 描画用ライブラリをインポート 26import matplotlib.pyplot as plt 27import seaborn as sns 28from matplotlib import gridspec, cm 29 30# 混合行列作成用メソッド confusion_matrix をインポート 31from sklearn.metrics import confusion_matrix 32 33def list_pictures(directory, ext='jpg|jpeg|bmp|png|ppm'): 34 return [os.path.join(root, f) 35 for root, _, files in os.walk(directory) for f in files 36 if re.match(r'([\w]+.(?:' + ext + '))', f.lower())]
#モデルの構造を定義 def define_model(): model = Sequential() model.add(BatchNormalization(input_shape=(96, 96, 3))) model.add(Conv2D(filters=32, kernel_size=(3,3), strides=(1,1))) model.add(BatchNormalization()) model.add(Activation('relu')) model.add(Conv2D(filters=32, kernel_size=(3,3), strides=(1,1))) model.add(BatchNormalization()) model.add(Activation('relu')) model.add(MaxPool2D(pool_size=(2,2))) model.add(Dropout(0.2)) model.add(Conv2D(filters=64, kernel_size=(3,3), strides=(1,1))) model.add(BatchNormalization()) model.add(Activation('relu')) model.add(Conv2D(filters=64, kernel_size=(3,3), strides=(1,1))) model.add(BatchNormalization()) model.add(Activation('relu')) model.add(Conv2D(filters=64, kernel_size=(3,3), strides=(1,1))) model.add(BatchNormalization()) model.add(Activation('relu')) model.add(MaxPool2D(pool_size=(2,2))) model.add(Dropout(0.2)) model.add(Flatten()) model.add(Dense(256, activation="relu")) model.add(Dropout(0.2)) model.add(Dense(256, activation="relu")) model.add(Dropout(0.2)) model.add(Dense(2, activation='softmax')) return model model = define_model()
Python
1model.compile(loss='sparse_categorical_crossentropy', optimizer=Adam(lr=0.005), metrics=['sparse_categorical_accuracy']) 2
Python
1 2datagen = ImageDataGenerator(rotation_range=30, width_shift_range=0.3, height_shift_range=0.3, horizontal_flip=True) 3datagen.fit(X_train) 4 5# 訓練を実行(訓練しながら ImageDataGenerator が機能し、Data Augumentation を行っている) 6batch_size = 10 7valid_samples = 25 8train_samples = len(X_train) - valid_samples 9mc = ModelCheckpoint("cnn_model_02.h5", monitor="val_loss", save_best_only=True, verbose=1) 10es = EarlyStopping(monitor='val_loss', patience=15) 11hist = model.fit_generator(datagen.flow(X_train[:train_samples], y_train[:train_samples], batch_size=batch_size), 12 steps_per_epoch= train_samples / batch_size, 13 epochs=40, 14 callbacks=[mc, es], 15 validation_data=datagen.flow(X_train[-valid_samples:], y_train[-valid_samples:], batch_size=batch_size), 16 validation_steps=valid_samples / batch_size)
回答1件
あなたの回答
tips
プレビュー