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
)
,如果我願意爲了說10個類而不是二元的,我還要用'密集(1,activation ='sigmoid')'還是'Dense(classes,activation ='softmax')''來做'categorical' crossentropy? – Prabaha
然後你使用Dense(10,activation ='softmax')!當你在分類中工作時,每個輸出神經元都是一個類,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],告訴你哪一類最可能。 –