質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

11326閲覧

'Sequential' object has no attribute 'predict_classes' Pythonエラーの解決

Shin_go

総合スコア19

深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/09/10 14:01

編集2021/09/10 14:30

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)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

lazykyama

2021/09/10 14:24

参照されているメソッド名から推測すると、`tf.keras.Sequential` か `keras.models.Sequential` のどちらかかと思いますが、記載の内容だけでは情報が不足しています。 使用しているフレームワークの詳細について記載ください。 また `model` 作成から `predict_classes()` 呼び出しまでのコードもあわせて追記いただいたほうが、回答の精度が上がります。ご協力をお願いします。
Shin_go

2021/09/10 14:31

ありがとうございます。 今追記いたしました。 サンプルコードなので、理解に乏しい状況ではあります。
guest

回答1

0

ベストアンサー

追記ありがとうございました。

今回のコードで、
AttributeError: 'Sequential' object has no attribute 'predict_classes'
というエラーが出る原因としては、おそらくTensorFlowのバージョン違いではないかと思われます。

サンプルコードとのことですが、少し古めのコードなのではないでしょうか。
TensorFlowのバージョン1系には、Sequential クラスに predict_classes() が存在しているようです。
https://www.tensorflow.org/versions/r1.15/api_docs/python/tf/keras/Sequential#predict_classes

一方最新版 (v2.6) では、このメソッドが存在しないようです。
https://www.tensorflow.org/api_docs/python/tf/keras/Sequential

そのため対処としては以下どちらかとなります。

  • TF1をインストールし直す (e.g., pip install tensorflow==1.15.5)
  • TF2で、Sequential.predict() からの出力を使ってクラスを計算するロジックを独自に書く

投稿2021/09/10 14:46

lazykyama

総合スコア58

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Shin_go

2021/09/10 14:52

いろいろご教示いただき大変ありがたいです。 インストールしなおすことにしたいのですが、 インポートということでよかったのでしょうか。 pip install tensorflow==1.15.5 これをコードにとして書くということででしょうか? いろいろお聞きしてすみません。
Shin_go

2021/09/10 14:57

ごめんなさい。なんとかできそうです。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問