我使用的代码几乎与我在这里找到的相似...
https://towardsdatascience.com/classify-butterfly-images-with-deep-learning-in-keras-b3101fe0f98
该示例与二进制分类有关。我正在测试的数据要求进行多类分类。我想我需要更改激活和丢失功能。如果我有两种以上的类型,是否可以使用此处找到的相同代码?
https://github.com/bertcarremans/Vlindervinder/blob/master/model/CNN.ipynb
更新: 我还有一个问题。如果我有足够的数据,是否有必要进行扩充?
答案 0 :(得分:1)
只需将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')
答案 1 :(得分:1)
否,即多标签分类。你说多类的。这是给您的摘要:
Dense(1, activation='sigmoid')
之类的内容,并使用binary_cross_entropy
作为损失函数。Dense(num_labels, activation='sigmoid')
,然后再次binary_cross_entropy
。在这种情况下,一个示例可以同时属于多个标签。Dense(num_classes, activation='softmax')
与softmax_crossentropy
一起使用。