首页 > 解决方案 > 查找微调模型的顶层

问题描述

我想使用基于 MobileNetV2(在 Keras 上预训练)的微调模型。但我需要添加顶层以便将我的图像分为 2 个类。我想知道如何选择我需要的层的“架构”?在一些示例中,人们使用 SVM 分类器或一系列具有特定数量神经元的 Dense 层作为顶层。

以下代码(默认情况下),它的工作原理:

        self.base_model = base_model
        x = self.base_model.output
        x = GlobalAveragePooling2D()(x)
        x = Dense(1024, activation='relu')(x)
        predictions = Dense(2, activation='softmax')(x)

有什么方法可以找到最佳解决方案吗?

标签: kerasdeep-learningneural-networkconv-neural-network

解决方案


我会推荐DropoutBatchNormalization。Dense 很容易过拟合,因为它在一个层中有太多的参数。两层都可以很好地规范模型。GlobalAveragePooling2D是一个不错的选择,因为它本身也像正则化器。

我还建议,对于二元分类问题,您可以将输出层更改为Dense(1, activation='sigmoid')仅预测 P(class1),您可以通过 1-P(class1) 计算 P(class2)。在这种情况下,您应该使用的损失将binary_crossentropy代替categorical_crossentropy.


推荐阅读