2
flow_from_directory
を使用してモデルをトレーニングしようとしています。私が使用している損失はbinary_crossentropy
で、Y_train
データのto_categorical
関数を呼び出す必要があります。私はflow_from_directory
のためにそれを行う方法がわからないと、プログラムは次のエラーを投げている:Keras: `flow_from_directory`で` crossentropy`の損失を使用
Traceback (most recent call last):
File "vgg16-sim-conn-rmsprop-2-main.py", line 316, in <module>
epochs=25
File "/home/yx96/anaconda2/lib/python2.7/site-packages/keras/legacy/interfaces.py", line 8
8, in wrapper
return func(*args, **kwargs)
File "/home/yx96/anaconda2/lib/python2.7/site-packages/keras/engine/training.py", line 187
6, in fit_generator
class_weight=class_weight)
File "/home/yx96/anaconda2/lib/python2.7/site-packages/keras/engine/training.py", line 161
4, in train_on_batch
check_batch_axis=True)
File "/home/yx96/anaconda2/lib/python2.7/site-packages/keras/engine/training.py", line 129
9, in _standardize_user_data
exception_prefix='model target')
File "/home/yx96/anaconda2/lib/python2.7/site-packages/keras/engine/training.py", line 133
, in _standardize_input_data
str(array.shape))
ValueError: Error when checking model target: expected predictions to have shape (None, 2) b
ut got array with shape (100, 1)
私が使用していたデータ・ジェネレータは、次のとおりです。
train_datagen = ImageDataGenerator(
featurewise_center=True,
horizontal_flip=True,
zoom_range=0.2,
data_format="channels_last"
)
train_generator = train_datagen.flow_from_directory(
'./train',
target_size=(224, 224),
batch_size=100,
class_mode='binary'
)
そしてfit_generator
は次のとおりです。
model.fit_generator(
train_generator,
steps_per_epoch=2500,
epochs=25
)
:-)あなたの問題を解決を願ってい
:あなたはこのようにそれを行う0と1の間になりますバイナリ、あなただけの出力値を一つ仕事をしたい場合バイナリの代わりに 'カテゴリー的な'クロスエントロピーをするために、例えば10個のクラスについて、 'Dense(1、activation = 'sigmoid')'や 'Dense(class、activation = 'softmax')' – Prabaha
次に、Dense(10、activation = 'softmax')を使用します。あなたがカテゴリー別に作業するとき、すべての出力ニューロンは1つのクラスです。softmaxは出力を正規化して、すべてのニューロンの合計が1になるようにします。理想的には[0、0、1、0、0、0、0 、0,0,0]、最も可能性が高い:[0.1、0.2、0、0.05、0.1、0.05、0.00、0、0.5] –