前提・実現したいこと
ここに質問の内容を詳しく書いてください。
Pythonの3種類の画像を判別する深層学習を行っています。サイト(https://tonahumabest.com/dog-cat-penguin-deeplearuning/)を参考にしてソースコードをコピーしたのですがうまく動かずエラーもわかりません。
サイトではMacを使っていましたが、私はWindowsを利用しています。
発生している問題・エラーメッセージ
IndexError Traceback (most recent call last) <ipython-input-11-07dcd7668d18> in <module> 17 18 #fの一番目つまりimageの一つ下のフォルダがtrainの場合はtrainデータに持ってくる ---> 19 if f.split("/")[1] == "train": 20 x_train.append(img_data) 21 y_train.append(int(f.split("/")[2].split("_")[0])) IndexError: list index out of range
該当のソースコード
import numpy as np import tensorflow as tf import glob #画像の準備###################### x_train = [] y_train = [] x_test = [] y_test = [] #globを用いることでここに当てはまる全ての情報をループさせることができる for f in glob.glob("image/*/*/*.jpg"): img_data = tf.io.read_file(f) print(f) img_data = tf.io.decode_jpeg(img_data) #バラバラの画像の縦横比を揃える img_data = tf.image.resize(img_data,[100,100]) #fの一番目つまりimageの一つ下のフォルダがtrainの場合はtrainデータに持ってくる if f.split("/")[1] == "train": x_train.append(img_data) y_train.append(int(f.split("/")[2].split("_")[0])) elif f.split("/")[1] == "test": x_test.append(img_data) y_test.append(int(f.split("/")[2].split("_")[0])) #numpy形式に変換 x_train = np.array(x_train)/255.0 y_train = np.array(y_train) x_test = np.array(x_test)/255.0 y_test = np.array(y_test) #ニューラルネットワークの構築########## model = tf.keras.models.Sequential([ #入力層(正方形にするが、横長の画像は潰れてしまう) tf.keras.layers.Flatten(input_shape=(100,100,3)), #隠れ層,reluは活性化関数 tf.keras.layers.Dense(64,activation="relu"), #隠れ層,dropoutはディープラーニングの精度を上げるためのもので試行錯誤する場所 tf.keras.layers.Dropout(0.2), #出力層,犬、猫、ペンギンの3種類,分類するときはsoftmaxにしておけばまず動く tf.keras.layers.Dense(3,activation="softmax") ]) #モデルの学習######################## #どれくらい間違えたのか計算する方法(学習に関する設定) model.compile(optimizer="adam",loss="sparse_categorical_crossentropy",metrics=["accuracy"]) #epochは学習を何回回すのか?やりすぎたら過学習になる。最低でも100くらいなる model.fit(x_train,y_train,epochs=30) #モデルの評価######################## model.evaluate(x_test,y_test)
試したこと
https://tonahumabest.com/dog-cat-penguin-deeplearuning/
サイトを参考に行ったのですがエラーが出てしまいました。
Indexの指定が悪い場合以外に、
元のオブジェクトがちゃんとできていないケースがある。
関数の戻り値でリストを得ている場合など、多いにある。ということを
調べて理解をしたのですが、どこを修正すればよいかわかりません。
補足情報(FW/ツールのバージョンなど)
Python初学者なので、わからないことが多いですがよろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー