【发布时间】:2021-09-06 17:16:57
【问题描述】:
我正在 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/类数)。准确度如下图所示:
而损失显示在:
Loss for training and validation
知道为什么会发生这种情况吗?如何提高验证准确性?我也使用了 L1 和 L2 正则化以及 Dropout 层。我也尝试添加更多数据,但这些都没有帮助。
【问题讨论】:
标签: python deep-learning conv-neural-network overfitting-underfitting