我想为具有300个类别的数据集设计CNN。我已经用以下模型测试了两个类。它具有良好的准确性。
model = Sequential([
Conv2D(16, 3, padding='same', activation='relu', input_shape=(IMG_HEIGHT, IMG_WIDTH ,3)),
MaxPooling2D(),
Conv2D(32, 3, padding='same', activation='relu'),
MaxPooling2D(),
Conv2D(64, 3, padding='same', activation='relu'),
MaxPooling2D(),
Flatten(),
Dense(512, activation='relu'),
Dense(1, activation='sigmoid')
])
但是我将类的数量增加为5,准确性降低到0.2。如何设计300个类的CNN架构?
答案 0 :(得分:0)
为了对超过2个类的数据集执行训练,您需要在最后一个Dense层中使用categorical_crossentropy损失和softmax激活层。
最后一个密集神经元的数量将决定您要预测的类别的数量,因此,如果您有300个类别,它将看起来像这样:
[...]
MaxPooling2D(),
Flatten(),
Dense(512, activation='relu'),
Dense(300, activation='softmax')
])
此外,您拥有的课程越多,模型学习每个功能的难度就越大。因此,您将需要增加它的宽度(更多的过滤器),它的深度(更多的卷积块)或它的分辨率(更大的输入)。
设计CNN模型的一个很好的开始,那就是看一下VGG架构及其卷积块。
希望它能帮助您获得一些直觉。