【发布时间】:2020-08-13 16:37:03
【问题描述】:
我正在实现一个 pytorch 神经网络(回归),并希望确定最佳的网络拓扑、优化器等。我使用交叉验证,因为我有 x 个测量数据库,我想评估我是否可以训练一个神经网络与 x 个数据库的子集建立网络,并将神经网络应用于未见过的数据库。因此,我还介绍了一个测试数据库,我在超参数识别阶段没有使用它。 我对如何处理交叉验证中的时期数感到困惑,例如我有许多 epochs = 100。有两种选择:
epoch 数是要调整的超参数。在每个时期,确定所有交叉验证迭代的平均误差。在使用所有网络拓扑、优化器等对模型进行训练后,确定平均误差最小的模型并具有如下参数:
-网络拓扑:1
-优化器:SGD
-时期数:54
为了计算测试集的性能,使用这些参数(epochs = 54)在训练和验证数据上训练模型。然后在测试集上应用和评估。时期数不是要调整的超参数。使用所有网络拓扑、优化器等对模型进行训练。对于每个模型,使用误差最小的时期数。对模型进行比较,可以使用以下参数确定最佳模型:
-网络拓扑:1
-优化器:SGD
为了计算测试数据的性能,使用“简单”的训练和验证拆分(例如 80-20)。该模型使用上述参数和 100 轮训练和验证数据进行训练。最后,在测试数据上评估具有多个 epoch 且产生最小验证误差的模型。
哪个选项正确或更好?
【问题讨论】:
标签: python neural-network pytorch cross-validation