在同一数据集上训练精度和测试精度之间的不一致[关闭]

问题描述 投票:0回答:1

我正在使用Keras在来自视频的帧上训练网络(CNN + RNN)进行分类。由于数据集太大,我将集合分成多个块,并分别在每个块上训练模型。我已经在每个区块上训练了5个时期的模型。我已经在测试数据集上测试了模型,但结果不理想。因此,我只想检查模型并在训练的最后一个块上测试模型。在该区块上,训练acc约为0.97。但是,当我在最后一块测试相同模型时,获得了0.88 acc。为什么会这样呢?注意:我知道不应在训练上进行测试,但我这样做是为了验证模型没有错误。这是否表明了这种情况。此外,可以像我提到的那样训练模型吗?从理论上讲,这听起来不错,但我想确保这是有效的。另一个注意事项:由于kaggle施加的限制,我拆分了数据集。

简而言之,我想知道为什么当在块上训练的最后一个纪元结束时,模型对x的准确性得分,而在同一块上对y的准确性得分为何。他们不应该一样吗?

tensorflow keras deep-learning data-science cross-validation
1个回答
0
投票

发生的情况是您的模型没有得到完全或适当的训练,或者可能是由于模型设计不当所致。确保数据集具有适当的各种数据,以使模型更好地理解数据。另外,请确保在每个块上进行更多的训练,通常大约需要10个纪元。您的模型可能也无法以能够理解各种数据的方式进行设计。您的培训方法不理想,请执行以下操作,]:>

for i in range(5):
    model.fit(batch1, batch1_labels)
    model.fit(batch2, batch2_labels)
    ...

因为它随后将以张量流通常训练它的方式训练数据,否则模型将训练一些数据,然后训练其他数据并'忘记'先前的数据。

© www.soinside.com 2019 - 2024. All rights reserved.