可以将测试数据重新用作训练数据吗?

我在使用卷积神经网络(CNN)来对图像进行分类。我开始时有1000张图像。因此,我使用了900张作为训练数据集,100张作为测试数据集。我得到了一个大约70%正确率的模型。

今天我又获得了150张图像。所以我有两个继续进行的想法:

(1) 我可以将之前的100张测试数据和900张训练数据合并成一个“新”的训练集,这样我就可以有1000张训练数据来获得可能更好的模型吗?然后我可以将这新的150张图像用作新的“测试”数据?

(2) 我可以将新的150张图像和900张训练数据合并成一个“新”的训练集来训练一个更好的模型,并且继续使用之前的100张测试数据集来测试新模型吗?

显然我会尝试两种方法,但我理论上不确定哪一种更好…有什么评论吗?谢谢。


回答:

如果你想要最好的CNN,你应该尽可能多地使用数据进行训练。理论上,训练数据越多,你的测试误差就越接近训练误差。这意味着你的CNN在处理未经训练的例子时会表现得更好。另一方面,你不希望测试数据太少,因为你需要对准确率测量有信心。所以理想情况下,你应该获得更多的训练数据和更多的测试数据。

如果你的数据是IID,那么你不必担心用哪1150张图像来训练你的模型。

重新使用相同测试数据的唯一危险是,你可能会因为它在测试数据上给出了更好的结果而改变模型(例如,增加另一层,和/或增加现有层中的更多单元)。当你根据测试误差的观察来调整模型时,你有可能会过度拟合数据。你可以通过使用第三个数据集,即所谓的验证集,来调整模型,以缓解这个问题。

IID:总共1150张图像是从相同的分布中独立抽取的。换句话说,大致来说,除了这些图像对你来说是新的之外,150张和1000张之间没有什么区别,每张图像的选择不受其他任何图像选择的影响。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注