お世話になります。
現在、機械学習に興味があり勉強中です。
tensorflowとKerasを用いての基礎的な学習を試し、現在自分のデータを使用して試しています。
ImageDataGenerorを使ったラベル設定の仕方を参考に、初心者ながらプログラムしてみました。
行おうとしているのは多クラス分類で、CNNを用いた学習を試みています。
実行してみたのですが、
UnidentifiedImageError: cannot identify image file <_io.BytesIO object at 0x7f3485b360>
というエラーで詰まっています。
エラー名で調べたのですが、はっきりとした解決手段がわかりません。
心当たりなどががあれば教えていただきたいです。
何卒ご教示のほどお願い申し上げます。
参考にさせていただいたサイト:
( https://qiita.com/yakisobamilk/items//686d6ad5ae3285aec639 )
<フォルダ構成>
picture -╷- train -╷- 001(分類1) -╷- **.png #学習用
╎ ╎ ╎ (多数の画像・・省略)
╎ ╎ ╵- **.png
╎ ╵- 002(分類2) - (略)
╎ :
╎ ╵- 010(分類10) - (略)
╎
╵- val -╷- 001(分類1) - (略) #学習検証用
╵- 002(分類2) - (略)
:
- 010(分類10) - (略)
python
1#import 省略 2base_dir = ./picture 3 4train_dir = os.path.join(base_dir, 'traindata') 5validation_dir = os.path.join(base_dir, 'testdata') 6 7 8train_datagen = ImageDataGenerator(rescale=1.0/255) 9val_datagen = ImageDataGenerator(rescale=1.0/255) 10 11train_generator = train_datagen.flow_from_directory( 12 train_dir, 13 target_size=(128, 88), 14 color_mode='grayscale', 15 batch_size=20, 16 class_mode='categorical') 17 18validation_generator = val_datagen.flow_from_directory( 19 validation_dir, 20 target_size=(128, 88), 21 color_mode='grayscale', 22 batch_size=20, 23 class_mode='categorical') 24 25 26 27model = models.Sequential() 28model.add(layers.Reshape((128, 88, 1), input_shape=(128*88,), name='reshape')) 29model.add(layers.Conv2D(18, (7, 7), padding='same', 30 kernel_initializer=initializers.TruncatedNormal(), 31 use_bias=True, activation='relu', 32 name='conv_filter1')) 33model.add(layers.MaxPooling2D((2, 2), name='max_pooling1', strides=2)) 34model.add(layers.Conv2D(45, (5, 5), padding='same', 35 kernel_initializer=initializers.TruncatedNormal(), 36 use_bias=True, activation='relu', 37 name='conv_filter2')) 38model.add(layers.MaxPooling2D((3, 3), name='max_pooling2',strides=2)) 39model.add(layers.Flatten(name='flatten')) 40model.add(layers.Dense(1024, activation='relu', 41 kernel_initializer=initializers.TruncatedNormal(), 42 name='hidden')) 43model.add(layers.Dropout(rate=0.5, name='dropout')) 44model.add(layers.Dense(10182, activation='softmax', name='softmax')) 45 46model.summary() 47 48 49 50 51model.compile(optimizer='adam', 52 loss='categorical_crossentropy', 53 metrics=['acc']) 54 55 56 57history = model.fit(train_generator, 58 validation_data=validation_generator, 59 batch_size=128, epochs=10)
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/09 14:55
2021/01/09 21:41 編集
2021/01/09 21:27
2021/01/09 22:22
2021/01/10 10:29