如何正确设置神经网络训练以获得稳定的准确率和损失

数据挖掘 机器学习 深度学习 分类 统计数据 火炬
2022-03-06 04:11:30

我有一个在 Pytorch 中实现的 DenseNet121 用于图像分类。目前,训练设置非常简单:

  • 数据已加载。这里的一个重要特征是验证数据从一开始就是固定的,永远不会改变。其余数据我分为训练和测试。没有一个数据集重叠!
  • 对于每个 epoch 迭代训练数据加载器,计算损失,优化等。
  • 每 100 个批次使用验证数据加载器评估损失
  • 在 epoch 结束时,将当前状态在验证数据上的损失与之前具有最佳验证损失的状态进行比较(对于第一个 epoch,只需将其与 1e5 之类的随机高数进行比较)并保存当前状态,如果它更好或保持较旧的状态。
  • 在所有时期完成后,将具有最低验证错误的状态保存为最佳模型
  • 然后将最佳模型应用于测试数据。计算精度并绘制 ROC 曲线

我想知道如何扩展我的设置以使其成为一个适当的统计实验设置,以获得稳定的准确性和损失结果,即我希望能够说我的模型始终给出相同的结果。我在考虑运行测试步骤说 10 次并平均错误?或者您是否发现训练中有一些不足之处可以改进以提高稳定性?

提前致谢

1个回答

学习率是模型的首要参数之一,也是最重要的参数之一,你需要在开始构建模型时立即开始考虑。它控制模型的跳跃幅度,以及从那里学习的速度。

有一种学习率技术称为循环学习率。

使用循环学习率而不是固定值进行训练可以提高分类精度,而无需调整,而且通常迭代次数更少。看看这个:训练神经网络的循环学习率并在 pytorch 和详细信息博客中实现:使用 PyTorch 的自适应和循环学习率

通过这个小技巧,您可以构建模型的稳定版本。祝你好运。