我正在实现pytorch神经网络(回归),并希望确定最佳的网络拓扑,优化器等。我使用交叉验证,因为我有x个测量数据库,并且我想评估我是否可以训练神经网络与x数据库的子集进行网络连接,并将神经网络应用于看不见的数据库。因此,我还介绍了一个测试数据库,该数据库在超参数识别阶段不使用。 我对如何在交叉验证中处理时期数感到困惑,例如我的时代数=100。有两种选择:
时期数是要调整的超参数。在每个时期中,确定所有交叉验证迭代中的平均误差。在使用所有网络拓扑,优化器等对模型进行训练之后,将确定平均误差最小的模型,并具有以下参数:
-网络拓扑:1
-optimizer:SGD
-纪元数:54
为了计算测试集上的性能,使用训练和验证数据上的这些参数(历元数= 54)来精确训练模型。然后将其应用于测试集并进行评估。
时期数不是要调整的超参数。使用所有网络拓扑,优化器等对模型进行训练。对于每个模型,都使用误差最小的时期数。比较模型,并可以通过以下参数确定最佳模型:
-网络拓扑:1
-optimizer:SGD
为了计算测试数据的性能,使用了“简单”的训练和验证划分(例如80-20)。使用上述参数和训练和验证数据上的100个时期来训练模型。最后,在测试数据上评估了一个具有最小验证误差的历元的模型。
哪个选项是正确的还是更好的?
答案 0 :(得分:0)
最好不要对时代数进行微调。 选项2是更好的选择。 实际上,如果时期数是固定的,则无需设置验证。验证集可为您提供保存模型的最佳时期。