我正在 Pytorch 中使用 CNN 训练分类器。我的分类器有 6 个标签。每个标签有 700 个训练图像,每个标签有 10 个验证图像。批量大小为 10,学习率为 0.000001。每个类占整个数据集图像的 16.7%。我已经训练了 60 个 epoch,架构有 3 个主要层:
- Conv2D->ReLU->BatchNorm2D->MaxPool2D>Dropout2D
- Conv2D->ReLU->BatchNorm2D->展平->Dropout2D
- Linear->ReLU->BatchNorm1D->Dropout 最后是全连接和softmax。我的优化器是 AdamW,损失函数是交叉熵。随着训练准确度的提高,网络训练得很好,但验证准确度几乎保持不变,并且与每个类的机会相等(1/类数)。准确度如下图所示:
损失显示在:
有什么想法为什么会发生这种情况?如何提高验证准确性?我也使用了 L1 和 L2 正则化以及 Dropout 层。我也尝试添加更多数据,但这些没有帮助。