我正在使用 Keras 执行图像分类任务。
我用的是vgg16架构,我觉得更容易做,任务是对MRI图像中是否有肿瘤的图像进行分类。
像往常一样,我读取并制作相同形状(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。 我将训练好的模型保存在我的谷歌驱动器中。
第二天,我使用相同的程序,通过加载保存的模型来提高模型性能。
我没有改变模型架构,我只是加载了保存的模型,该模型的准确度为 0.7261。
这一次,我得到了更好的性能,val_loss 为 0.58,val_accurqcy 为 0.7976。
我想知道这是如何获得高精度的。然后,我发现在拆分数据集时,图像会随机拆分,因此第一次训练过程中的一些测试数据将成为第二次训练过程中的训练数据。因此,该模型在第二次训练过程中学习了图像并进行了很好的预测。
我必须澄清一下,这个模型是真正学习肿瘤模式还是我们使用相同的数据集或相同的图像样本训练和测试模型。
谢谢
答案 0 :(得分:0)
使用 train_test_split
并在不同会话中进行验证时,请始终设置随机种子。否则,您将使用不同的拆分,并像您所说的那样泄漏数据。该模型不是在“学习”更多,而是在它已经训练过的数据上进行验证。实际性能可能会更差。