这是作弊。以这种方式训练的模型对“如何在现实生活中”的表现没有任何合理的保证
您应该做的是有一个单独的机制来检测学习何时完成(似乎您的训练是迭代的),可能要么分析模型本身,要么使用一些单独的(通常称为验证)保持部分数据集。
简而言之:您无法使用测试数据 的 什么 强> 除了报告最终价值,你不能基础 的 任何决定 强> 。
这取决于你在做什么。
如果你使用测试精度来拟合超参数,那么是的,你是在作弊。测试数据间接地“泄漏”到您的训练数据中并且您过度拟合。
因此,建议有3个数据集:Train,Test和 验证 数据。
的 锁定测试数据,不要触摸它,直到您调整模型(训练)。 强>
尽可能多地使用验证数据来查找最佳超参数等。
完成后,解锁测试数据以报告模型的准确性(并强调, 不要使用此反馈来调整您的模型 )。
如果您对测试数据的准确性不满意,请考虑重新考虑您的模型。如果您对测试数据结果不满意,那么一旦模型投入生产,您就不会满意。
如果您没有足够的数据来创建三个分区,请考虑进行操作 k折交叉验证 。
好吧,你可以这样做(假设你还有第三组数据,有时称为“验证”集)。它被称为提前停止。我不认为这样做有什么好处;是否提前停止取决于训练和验证集的最佳参数的相对位置。如果我没记错的话,大概有一半时间会提前停止,有一半时间则不会。