繁体   English   中英

如何为 CNN 选择最佳层并提高精度?

[英]How to choose the best layers for CNN and improve the precision?

我正在使用 CNN model 构建食物识别问题。 我的数据由 35 个标签和 1017 个大小为 224 的图像组成,我将训练数据和有效数据分开,结果是 824 个训练和 193 个有效。 我为如下代码的类构建结构。 然而,在 100 多个 epoch 之后,我运行了测试数据集,预测分数只有 2.85%,f1_score、precision 和 recall 指标只出现在 1-2 个标签中。 如何提高我的预测分数以及 f1_score、precision、recall

model = tf.keras.models.Sequential([
    tf.keras.layers.Conv2D(32, (3,3), activation='relu', input_shape=(224,224,3)),
    tf.keras.layers.Conv2D(32, (3,3), activation='relu',padding='same'),
    tf.keras.layers.MaxPooling2D(2,2),
    tf.keras.layers.Conv2D(64, (3,3), activation='relu',padding='same'),
    tf.keras.layers.Conv2D(64, (3,3), activation='relu',padding='same'),
    tf.keras.layers.MaxPooling2D(2,2),
    tf.keras.layers.Flatten(),
    tf.keras.layers.Dense(256, activation='relu'),
    tf.keras.layers.Dropout(0.5),
    tf.keras.layers.Dense(35, activation='softmax'),
])

model.compile(optimizer='adam',
              loss='categorical_crossentropy', 
              metrics=['accuracy'])

model.summary()

最重要的是你需要更多的数据,如果你训练 model 100 个 epoch 的可用数据,它肯定会过拟合训练样本。

  1. 收集更多数据 | 手动注释更多数据
  2. 由于您有 35 个类,因此您应该拥有所有类的平衡数据集。
  3. 从较少的卷积层和 FCL 开始,逐渐增加层及其参数并保存每个 epoch 的结果
  4. 随着您提到的类的数量,您还需要大量的测试数据来获得准确的结果,并且训练和测试样本中的图像上下文可能不同。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM