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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Google Colaboratory

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

Python

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

Q&A

解決済

1回答

1624閲覧

【Python】ValueErrorが出てしまいます。

atomu__

総合スコア3

Google Colaboratory

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

Python

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

0グッド

0クリップ

投稿2023/01/04 07:28

編集2023/01/05 04:39

前提

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

追記 ご回答頂いたことを試してみると質問したname errorは出なくなったのですが、value error というエラーが発生しました。
どなたか解決方法をご教示頂けたら幸いです。

実現したいこと

エラーが発生しない

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

ValueError Traceback (most recent call last) <ipython-input-3-343adfe60263> in <module> 41 42 #学習データとテストデータに分ける(テストデータ二割、学習データ八割) ---> 43 X_train,X_test,Y_train,Y_test = train_test_split(X,Y,test_size = 0.2) 44 #学習データ(八割) 45 print(X_train.shape) 1 frames /usr/local/lib/python3.8/dist-packages/sklearn/model_selection/_split.py in _validate_shuffle_split(n_samples, test_size, train_size, default_test_size) 2096 2097 if n_train == 0: -> 2098 raise ValueError( 2099 "With n_samples={}, test_size={} and train_size={}, the " 2100 "resulting train set will be empty. Adjust any of the " ValueError: With n_samples=0, test_size=0.2 and train_size=None, the resulting train set will be empty. Adjust any of the aforementioned parameters.

該当のソースコード

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)

試したこと

調べてみると、ValueError: n_samples=0、test_size=0.2、train_size=None の場合、結果のトレーニング セットは空になります。 前述のパラメータのいずれかを調整します。という意味みたいです。
そして、Stack Overflowというサイトに同じエラーになった人が質問をしていてその答えに"私の場合、データへのパスが無効でした。 ロードされたファイルへのパスが存在するかどうか、またはファイルを読み取る変数にデータが保持されているかどうかを確認してください。"と書かれてありました。
しかし、私ではこの意味が理解できなかったので質問をさせて頂きました。

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

MacBook Pro 13.0.1
Python 3.11.0

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

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

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

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

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

guest

回答1

0

ベストアンサー

参考サイトと比べて下記が異なっていますね。

for label,class_name in enumerate(classes):で始まるループ部分はY.append(label)までです。質問のコードですとprint(Y_test.shape)までインデントがループ処理内に入ってしまっていますので、インデントを修正してください。

インデントを修正した上でコードを実行してもエラーが発生するか確認してください。

投稿2023/01/04 07:48

編集2023/01/04 07:49
meg_

総合スコア10580

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

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

atomu__

2023/01/04 09:08

ご回答ありがとうございます! ご指摘頂いたインデントを修正したところ、質問したname error はなくなったのですが “ValueError: with n_sample=0, test_size=0.2 and train_size=None, the resulting train set will be empty. Adjust any of the aforementioned parameters.”というエラーが出てしまいました。 調べたところ、train_size=None の場合結果のトレーニングセットは空になります。前述のパラメータのいずれかを調整します。という意味みたいです。 もしよろしければ、このエラーの解決方法もご教示頂けたら幸いです。
meg_

2023/01/04 17:19

エラー発生行はどこでしょうか? 現在の進捗とエラーメッセージ全文(ユーザー名は隠していただいて結構です)を質問に追記されると回答がつきやすくなるかと思います。
atomu__

2023/01/05 04:42

コメントありがとうございます! エラーメッセージ全文や試したことを追記しました。 ご丁寧にありがとうございます。
meg_

2023/01/05 10:25

X と Y の値がどうなっているか確認されましたか? 未だなら確認してみてください。
atomu__

2023/01/06 07:05

返信が遅れました。 コメントありがとうございます。 print(X)とprint(Y)を実行してみたところXは[],Yも[]となりました。 print(X_train)やprint(Y_train)も実行してみましたが、"NameError: name 'X_train' is not defined"とエラーが出てしまいました。
meg_

2023/01/06 07:35

X_train,X_test,Y_train,Y_test = train_test_split(X,Y,test_size = 0.2) で発生した ValueError は X, Y のデータが無かったのが原因ですね。 files = glob.glob(path + "/" + class_name + "/*.jpg") のコード実行後に、files にちゃんと画像ファイルへのパスが代入されていますか?(パスが間違っている可能性が高い気がします)
atomu__

2023/01/07 05:36

コメントありがとうございます! もうわけが分からなくなってしまったのでyoutubeを見てもう一回ファイル構成からコードまで最初からやり直すと、files = glob.glob("./images/" + class_name + "/*.jpg")の"jpg"が私の場合大文字の"JPG"だということが分かりました!大文字にするとエラーは消え、画像認識AIを無事作り終える事ができました! 初心者の私に丁寧にご返信頂きまして本当にありがとうございます! ベストアンサーとさせて頂きます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問