神经网络的交叉验证:如何处理划时代的数量



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

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

  2. 划时代的数量不是一个需要调整的超参数。使用所有网络拓扑、优化器等对模型进行训练。对于每个模型,使用误差最小的时期数量。对模型进行比较,可以使用以下参数来确定最佳模型:
    -网络拓扑结构:1
    -优化器:SGD
    为了计算测试数据的性能,使用了"简单"的训练和验证分割(例如80-20(。利用上述参数和训练和验证数据上的100个历元对模型进行训练。最后,在测试数据上评估了一个具有产生最小验证误差的多个时期的模型。

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

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

最新更新