Python Keras:在来自目录的“flow”中使用“crossentropy”损失`

Python Keras:在来自目录的“flow”中使用“crossentropy”损失`,python,keras,Python,Keras,我正在尝试使用flow\u from\u目录来训练我的模型。我使用的损失是binary\u crossentropy,它需要调用Y\u列数据上的to\u category函数。我不知道如何从_目录为flow_执行此操作,程序抛出以下错误: Traceback (most recent call last): File "vgg16-sim-conn-rmsprop-2-main.py", line 316, in <module> epochs=25 File "/h

我正在尝试使用
flow\u from\u目录
来训练我的模型。我使用的损失是
binary\u crossentropy
,它需要调用
Y\u列
数据上的
to\u category
函数。我不知道如何从_目录为
flow_执行此操作,程序抛出以下错误:

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)
fit_生成器
是:

model.fit_generator(
    train_generator,
    steps_per_epoch=2500,
    epochs=25
)

如果您使用的是
binary\u crossentropy
,那么设置
class\u mode='binary'
是正确的

但是你可能失败了,因为你没有给我们展示模型,所以这篇文章没有显示在你模型的最后一层

您可能有一个
密集型(2,activation='softmax')
。这是“一个热门”或分类交叉熵版本。如果您想使用二进制,则只输出一个介于0和1之间的值。你是这样做的:

Dense(1, activation = 'sigmoid')

我希望这能解决你的问题:-)

所以,如果我想做
分类的
交叉熵,而不是二进制的,比如说10个类,那么我是否仍然使用
密集型(1,activation='sigmoid')
,或者
密集型(classes,activation='softmax')
?那么你就使用密集型(10,activation='softmax')!当你在分类中工作时,每个输出神经元都是一个类,softmax使输出标准化,使每个神经元的总和为1,理想情况下你会得到类似[0,0,1,0,0,0,0,0,0,0,0,0,0,0,0]的结果,但最有可能的结果是:[0.1,0.2,0,0,0.05,0.1,0.05,0.00,0,0.5],告诉你哪一个是最可能的类。
Dense(1, activation = 'sigmoid')