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

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

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

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

Q&A

解決済

1回答

955閲覧

Pythonの3種類の画像を判別する深層学習を行っています。サイトを参考にしてソースコードをコピーしたのですがうまく動かずエラーもわかりません。

TUTtb

総合スコア0

Python

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

0グッド

0クリップ

投稿2021/07/26 10:28

編集2021/07/27 02:46

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
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初学者なので、わからないことが多いですがよろしくお願いいたします。

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

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

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

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

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

jbpb0

2021/07/26 10:40

print(f) の結果は、どのように表示されてますか?
TUTtb

2021/07/26 10:42

image\test\0_1m\S__34775135.jpg image\test\1_1s\S__34775075.jpg image\test\2_1p\S__34775104.jpg image\train\0_1m\S__34775111.jpg image\train\0_1m\S__34775113.jpg image\train\0_1m\S__34775114.jpg image\train\0_1m\S__34775115.jpg image\train\0_1m\S__34775116.jpg image\train\0_1m\S__34775117.jpg image\train\0_1m\S__34775118.jpg image\train\0_1m\S__34775119.jpg image\train\0_1m\S__34775120.jpg image\train\0_1m\S__34775121.jpg image\train\0_1m\S__34775122.jpg image\train\0_1m\S__34775124.jpg image\train\0_1m\S__34775125.jpg image\train\0_1m\S__34775126.jpg image\train\0_1m\S__34775127.jpg image\train\0_1m\S__34775128.jpg image\train\0_1m\S__34775129.jpg image\train\0_1m\S__34775130.jpg image\train\0_1m\S__34775131.jpg image\train\0_1m\S__34775132.jpg image\train\0_1m\S__34775133.jpg image\train\0_1m\S__34775135.jpg image\train\0_1m\S__34775136.jpg image\train\0_1m\S__34775137.jpg image\train\0_1m\S__34775138.jpg image\train\1_1s\S__34775055.jpg image\train\1_1s\S__34775057.jpg image\train\1_1s\S__34775058.jpg image\train\1_1s\S__34775059.jpg image\train\1_1s\S__34775060.jpg image\train\1_1s\S__34775061.jpg image\train\1_1s\S__34775062.jpg image\train\1_1s\S__34775063.jpg image\train\1_1s\S__34775064.jpg image\train\1_1s\S__34775065.jpg image\train\1_1s\S__34775066.jpg image\train\1_1s\S__34775068.jpg image\train\1_1s\S__34775069.jpg image\train\1_1s\S__34775070.jpg image\train\1_1s\S__34775071.jpg image\train\1_1s\S__34775072.jpg image\train\1_1s\S__34775073.jpg image\train\1_1s\S__34775074.jpg image\train\1_1s\S__34775075.jpg image\train\1_1s\S__34775076.jpg image\train\1_1s\S__34775077.jpg image\train\1_1s\S__34775079.jpg image\train\1_1s\S__34775080.jpg image\train\1_1s\S__34775081.jpg image\train\1_1s\S__34775082.jpg image\train\2_1p\S__34775083.jpg image\train\2_1p\S__34775085.jpg image\train\2_1p\S__34775086.jpg image\train\2_1p\S__34775087.jpg image\train\2_1p\S__34775088.jpg image\train\2_1p\S__34775089.jpg image\train\2_1p\S__34775090.jpg image\train\2_1p\S__34775091.jpg image\train\2_1p\S__34775092.jpg image\train\2_1p\S__34775093.jpg image\train\2_1p\S__34775094.jpg image\train\2_1p\S__34775096.jpg image\train\2_1p\S__34775097.jpg image\train\2_1p\S__34775098.jpg image\train\2_1p\S__34775099.jpg image\train\2_1p\S__34775100.jpg image\train\2_1p\S__34775101.jpg image\train\2_1p\S__34775102.jpg image\train\2_1p\S__34775103.jpg image\train\2_1p\S__34775104.jpg image\train\2_1p\S__34775105.jpg image\train\2_1p\S__34775107.jpg image\train\2_1p\S__34775108.jpg image\train\2_1p\S__34775109.jpg image\train\2_1p\S__34775110.jpg 上記のように出力されました。
udon-ken

2021/07/26 10:43

コード上にあるprint(f)の部分で何が出力されてますか?
odataiki

2021/07/26 11:05

参考にされたサイトはMacかLinuxでフォルダの区切りがスラッシュなんでしょう。 質問者さんはWindowsをお使いだとしたらバックスラッシュ`\`でSplitしてみては如何でしょうか
TUTtb

2021/07/27 02:34

udon-ken様 print(f)の部分で今回使う画像のtrainファイルとtestファイルが入っています。
TUTtb

2021/07/27 02:36

odataiki様 バックスラッシュ`\`で実行してみたのですが下記のエラーが出てしまいました。 File "<ipython-input-16-38d0fb130cb3>", line 19 if f.split("\")[1] == "train": ^ SyntaxError: invalid syntax
jbpb0

2021/07/27 03:50

f.split("\") ↓ 変更 f.split("\\")
TUTtb

2021/07/27 04:19

if f.split("\\")[1] == "train": にして動きました。ありがとうございました。
jbpb0

2021/07/27 04:26

4ヵ所全部忘れずに直してくださいね
TUTtb

2021/07/27 04:37

jbpb0様 ありがとうございました。
guest

回答1

0

自己解決

("/")から("")に変更して解決することができました。ありがとうございました。

投稿2021/07/27 04:22

TUTtb

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問