【Python】NameError: name 'X_train' is not definedとエラーが出てしまいます。

前提

python初心者です。
https://sasuwo.org/image-classification/#toc2
上記のサイトを参考にGoogle Colabで画像認識AIを作っていたところ、"NameError: name 'X_train' is not defined"というエラーが出てしまいました。
どなたか解決方法をご教示頂けたら幸いです。

実現したいこと

エラーが発生しない

発生している問題・エラーメッセージ

NameError Traceback (most recent call last) <ipython-input-94-92463c032a75> in <module> 1 #学習データで学習 ----> 2 model.fit(X_train, Y_train, epochs = 20, batch_size = 16) 3 4 #テストデータで精度確認 5 score = model.evaluate(X_test, Y_test, batch_size = 16) NameError: name 'X_train' is not defined

該当のソースコード

from google.colab import drive drive.mount('/content/drive') %cd "/content/drive/My Drive/Google Colab" import os import cv2 import numpy as np import glob as glob from sklearn.model_selection import train_test_split from keras.utils import np_utils #フォルダをクラス名にする path = "img/deep_learning" folders = os.listdir(path) #フォルダ名を抽出 classes = [f for f in folders if os.path.isdir(os.path.join(path, f))] n_classes = len(classes) #画像とラベルの格納 X = [] Y = [] #画像を読み込みリサイズする for label,class_name in enumerate(classes): files = glob.glob(path + "/" + class_name + "/*.jpg") for file in files: img = cv2.imread(file) img = cv2.resize(img,dsize=(224,224)) X.append(img) Y.append(label) #精度を上げるために正規化 X = np.array(X) X = X.astype('float32') X /= 255.0 #ラベルの変換 Y = np.array(Y) Y = np_utils.to_categorical(Y,n_classes) Y[:5] #学習データとテストデータに分ける(テストデータ二割、学習データ八割) X_train,X_test,Y_train,Y_test = train_test_split(X,Y,test_size = 0.2) #学習データ(八割) print(X_train.shape) #テストデータ(二割) print(X_test.shape) #学習データ(八割) print(Y_train.shape) #テストデータ(二割) print(Y_test.shape) from keras.applications.vgg16 import VGG16 from keras.models import Sequential from keras.models import model_from_json from keras.models import Model from keras.layers import Input, Activation, Dense, Flatten, Dropout from tensorflow.keras.optimizers import Adam #vgg16 input_tensor = Input(shape=(224,224,3)) #最後の1000層を省く base_model = VGG16(weights='imagenet',input_tensor=input_tensor,include_top=False) #後付けで入れたい層の作成 top_model = Sequential() top_model.add(Flatten(input_shape=base_model.output_shape[1:])) top_model.add(Dense(n_classes, activation='softmax')) #結合 model = Model(inputs=base_model.input,outputs=top_model(base_model.output)) #学習させない層 for layer in model.layers[:15]: layer.trainable = False print('# layers=', len(model.layers)) model.compile(loss='categorical_crossentropy',optimizer='adam',metrics=['accuracy']) model.summary() #学習データで学習 model.fit(X_train, Y_train, epochs = 20, batch_size = 16) #テストデータで精度確認 score = model.evaluate(X_test, Y_test, batch_size = 16)

試したこと

調べてX_trainが定義されていないということが分かり、print(Y_train)を書いてみるとY_trainも定義されていないことが分かりました。
X_test,Y_testもprintできません。
”X_train,X_test,Y_train,Y_test = train_test_split(X,Y,test_size = 0.2)”でX_train,X_test,Y_train,Y_testが定義されているものだと思っているのですが、エラーが出てしまいます。
フォルダの構成が間違っていて写真が上手く読み込まれていないのかもしれません。

補足情報(FW/ツールのバージョンなど)

MacBook Pro 13.0.1
Python 3.11.0

コメントを投稿

0 コメント