CNN的设计模型架构

时间:2020-02-05 13:37:56

标签: tensorflow machine-learning keras conv-neural-network

我想为具有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架构?

1 个答案:

答案 0 :(得分:0)

为了对超过2个类的数据集执行训练,您需要在最后一个Dense层中使用categorical_crossentropy损失和softmax激活层。

最后一个密集神经元的数量将决定您要预测的类别的数量,因此,如果您有300个类别,它将看起来像这样:

[...]
MaxPooling2D(),
Flatten(),
Dense(512, activation='relu'),
Dense(300, activation='softmax')
])

此外,您拥有的课程越多,模型学习每个功能的难度就越大。因此,您将需要增加它的宽度(更多的过滤器),它的深度(更多的卷积块)或它的分辨率(更大的输入)。

设计CNN模型的一个很好的开始,那就是看一下VGG架构及其卷积块。

希望它能帮助您获得一些直觉。