二进制和多类分类代码更改



我使用的代码与我在这里找到的几乎相似...

https://towardsdatascience.com/classify-butterfly-images-with-deep-learning-in-keras-b3101fe0f98

该示例与二元分类相关。我正在测试的数据需要多类分类。我想我需要更改激活和损失函数。如果我有超过 2 种类型,我可以使用此处找到的相同代码吗?

https://github.com/bertcarremans/Vlindervinder/blob/master/model/CNN.ipynb


更新: 我还有一个问题。如果我有足够的数据,是否需要增强?

不,这是多标签分类。你说多类。以下是给您的摘要:

  • 二进制:单个输出为 0或 1。您在最后一层中使用类似Dense(1, activation='sigmoid')的东西,binary_cross_entropy作为损失函数。
  • 多标签:您有多个 0或 1 的输出;Dense(num_labels, activation='sigmoid')又一次binary_cross_entropy.在这种情况下,一个示例可以同时属于多个标签
  • 多类:示例属于N 个类中的 1个,它们是互斥的。您将Dense(num_classes, activation='softmax')softmax_crossentropy一起使用。

只需将binary_crossentropy更改为categorical_crossentropy

cnn.compile(loss='categorical_crossentropy',
optimizer='rmsprop',
metrics=['accuracy'])

如果您的标签不是独热编码的,请修改以下行:

train_generator = train_datagen.flow_from_directory(
'data/train',
target_size=(IMG_SIZE,IMG_SIZE),
batch_size = BATCH_SIZE,
class_mode='categorical')
validation_generator = validation_datagen.flow_from_directory(
'data/validation',
target_size=(IMG_SIZE,IMG_SIZE),
batch_size = BATCH_SIZE,
class_mode='categorical')

相关内容

  • 没有找到相关文章

最新更新