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

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

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

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

Q&A

解決済

1回答

770閲覧

kerasエラー Error when checking target:

prog_qwerty

総合スコア13

Keras

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

0グッド

0クリップ

投稿2020/04/30 21:18

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

Error when checking target: expected dense_4 to have 4 dimensions, but got array with shape (20, 3)

該当のソースコード

python

1from keras import layers 2from keras import models 3 4model = models.Sequential() 5 6model.add(layers.Dense(512, activation='relu',input_shape=(298,298,3))) 7#model.add(layers.GlobalAveragePooling2D()) 8model.add(layers.Dense(3, activation='softmax')) 9model.summary() 10 11from keras import optimizers 12 13model.compile(loss='categorical_crossentropy', 14 optimizer=optimizers.RMSprop(lr=1e-4), 15 metrics=['accuracy']) 16 17from keras.preprocessing.image import ImageDataGenerator 18 19# All images will be rescaled by 1./255 20train_datagen = ImageDataGenerator(rescale=1./255) 21validation_datagen = ImageDataGenerator(rescale=1./255) 22test_datagen = ImageDataGenerator(rescale=1./255) 23 24train_generator = train_datagen.flow_from_directory( 25 # This is the target directory 26 train_dir, 27 # All images will be resized to 298*298 28 target_size=(298,298), 29 batch_size=20, 30 # Since we use binary_crossentropy loss, we need binary labels 31 class_mode='categorical') 32 33validation_generator = validation_datagen.flow_from_directory( 34 validation_dir, 35 target_size=(298,298), 36 batch_size=20, 37 class_mode='categorical') 38 39test_generator = test_datagen.flow_from_directory( 40 validation_dir, 41 target_size=(298,298), 42 batch_size=20, 43 class_mode='categorical') 44 45for data_batch, labels_batch in train_generator: 46 print('data batch shape:', data_batch.shape) 47 print('labels batch shape:', labels_batch.shape) 48 break 49#data batch shape: (20, 298, 298, 3) 50#labels batch shape: (20, 3) <=ここが問題? 51 52history = model.fit_generator( 53 train_generator, 54 steps_per_epoch=63, 55 epochs=30, 56 validation_data=validation_generator, 57 validation_steps=630//20) 58#ここでエラーメッセージが表示される 59 60model.save('first.h5')

予想

to_categorical を使うのでしょうか。その場合は、どこに、どのように記述すればよいかも教えて頂きたいです。

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

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

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

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

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

guest

回答1

0

ベストアンサー

Denseはモデル上では4次元であるのに、データは(20, 3)になっている、というエラーです。
現状のモデルではshapeは以下のようになるはずです。
(以下の20はバッチ数です)

Python

1model.add(layers.Dense(512, activation='relu',input_shape=(298,298,3))) #(20, 298, 298, 3)→(20, 298, 298, 512) 2#model.add(layers.GlobalAveragePooling2D()) 3model.add(layers.Dense(3, activation='softmax')) #(20, 298, 298, 512)→(20, 298, 298, 3)

Flattenなどを使って、ちゃんと出力が(20, 3)の形になるようにモデルを変更する必要があります。

投稿2020/05/01 02:20

fiveHundred

総合スコア9908

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問