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

我在使用卷积神经网络(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

Keras Dense层输入未被展平

这是我的测试代码: from keras import…

无法将分类变量输入随机森林

我有10个分类变量和3个数值变量。我在分割后直接将它们…

如何在Keras中对每个输出应用Sigmoid函数?

这是我代码的一部分。 model = Sequenti…

如何选择类概率的最佳阈值?

我的神经网络输出是一个用于多标签分类的预测类概率表: …

在Keras中使用深度学习得到不同的结果

我按照一个教程使用Keras中的深度神经网络进行文本分…

‘MatMul’操作的输入’b’类型为float32,与参数’a’的类型float64不匹配

我写了一个简单的TensorFlow代码,但不断遇到T…

发表回复

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