我正在尝试使用 flow_from_directory
来训练我的模型。我使用的损失是 binary_crossentropy
,它需要对 Y_train
数据调用 to_categorical
函数。我不知道如何对 flow_from_directory
执行此操作,并且程序抛出以下错误:
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
)
最佳答案
如果您使用 binary_crossentropy
来计算损失,则您正确设置了 class_mode='binary'
。
您可能失败的地方位于模型的最后一层,因为您没有向我们展示模型,所以这没有显示在您的帖子中。
您可能有一个Dense(2,activation='softmax')
。这是“one-hot”或分类交叉熵版本。如果你想使用二进制,你只输出一个介于 0 和 1 之间的值。你可以这样做:
Dense(1, activation = 'sigmoid')
我希望这能解决您的问题:-)
关于python - Keras:在 `crossentropy` 中使用 `flow_from_directory` 损失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45124875/