我正在使用Keras做一个图像分类任务。
我使用了vgg16架构,我认为它更容易做,任务是对核磁共振图像中有无肿瘤的图像进行分类。
像往常一样,我读取并制作相同形状(224×224×3)的所有图像,并通过将所有图像除以255进行归一化。然后训练测试拆分,测试数据集为25%,训练数据集为75%。
train, test = train_test_split(X, y, test_size=0.25)然后,我训练并获得了val_loss为0.64和val_accuracy为0.7261。我将经过训练的模型保存在我的google驱动器中。
第二天,我使用了相同的过程,通过加载保存的模型来提高模型的性能。
我没有改变模型架构,我只是加载了保存的模型,它的准确率达到了0.7261。
这一次,我得到了更好的性能,val_loss为0.58,val_accurqcy为0.7976。
我想知道这是如何获得高准确度的。然后,我发现在拆分数据集时,图像会随机拆分,因此第一个训练过程中的一些测试数据将成为第二个训练过程中的训练数据。因此,该模型在第二次训练过程中学习了图像并进行了很好的预测。
我必须澄清的是,这个模型是真正学习肿瘤模式,还是就像我们用相同的数据集或相同的图像样本训练和测试模型。
谢谢
发布于 2021-07-06 10:32:05
在不同的会话中使用train_test_split和验证时,请始终设置您的随机种子。否则,您将使用不同的拆分,并像您所说的那样泄漏数据。该模型并没有“学习”更多,而是在它已经训练过的数据上进行了验证。你在现实世界中的表现可能会更差。
https://stackoverflow.com/questions/68263670
复制相似问题