【问题标题】:Cross-validation of neural network: How to treat the number of epochs?神经网络的交叉验证:如何处理 epoch 的数量?
【发布时间】:2020-08-13 16:37:03
【问题描述】:

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

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

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

哪个选项正确或更好?

【问题讨论】:

    标签: python neural-network pytorch cross-validation


    【解决方案1】:

    epoch数最好不要微调。 选项 2 是更好的选择。 实际上,如果 # of epochs 是固定的,则不需要验证集。验证集为您提供保存模型的最佳时期。

    【讨论】:

      猜你喜欢
      • 2022-06-15
      • 2020-03-27
      • 2023-04-04
      • 2014-04-20
      • 2022-10-15
      • 2021-07-20
      • 2018-03-08
      • 2023-03-16
      • 2016-04-15
      相关资源
      最近更新 更多