神经网络的交叉验证:如何处理年代数?

2024-04-28 08:32:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在实现一个pytorch神经网络(回归),并希望确定最佳网络拓扑、优化器等。。我使用交叉验证,因为我有x个测量数据库,我想评估我是否可以用x数据库的子集训练神经网络,并将神经网络应用于看不见的数据库。因此,我还介绍了一个测试数据库,我在超参数识别阶段不使用它。 我对如何处理交叉验证中的历元数感到困惑,例如,我的历元数=100。有两种选择:

  1. 纪元数是一个需要调整的超参数。在每个历元中,确定所有交叉验证迭代的平均误差。使用所有网络拓扑、优化器等对模型进行训练后,确定平均误差最小的模型,并具有如下参数:
    -网络拓扑:1
    -优化器:SGD
    -纪元数:54
    为了计算测试集的性能,在训练和验证数据上使用这些参数(历元数=54)精确地训练模型。然后在测试集上应用和评估它

  2. 纪元数不是要调整的超参数。使用所有网络拓扑、优化器等对模型进行训练。对于每个模型,使用误差最小的历元数。对模型进行比较,并可通过以下参数确定最佳模型:
    -网络拓扑:1
    -优化器:SGD
    为了计算测试数据的性能,使用“简单”的培训和验证分割(例如80-20)。利用上述参数和100个历次的训练和验证数据对模型进行训练。最后,根据测试数据对具有多个历元的模型进行评估,得出验证误差最小

哪个选项是正确的还是更好的


Tags: 数据模型数据库参数神经网络pytorch性能交叉
1条回答
网友
1楼 · 发布于 2024-04-28 08:32:50

时代的数量最好不要微调。 选择2是一个更好的选择。 实际上,如果纪元的#是固定的,则不需要设置验证集。验证集为您提供保存模型的最佳纪元

相关问题 更多 >