我使用了https://github.com/aymericdamien/TensorFlow-Examples/blob/master/examples/5_DataManagement/tensorflow_dataset_api.py上的示例来创建我自己的分类模型。我使用了不同的数据,但使用了数据集的基本轮廓。
对于我的数据类型来说,打乱数据然后创建训练和测试集非常重要。然而,问题来自于洗牌。
当我使用 shuffled 训练集训练模型时,训练集的准确度为 +- 80%,测试集的准确度为 +- 70%。然后,我想将所有数据(即构成训练集和测试集的数据集)输入到模型中,以查看我拥有的该数据集的完全预测输出。
如果这个数据集作为训练集和测试集被打乱,我得到了大约 77% 的准确率,这符合预期,但是,如果我输入未打乱的数据(因为我需要查看预测),我得到 45%准确性。这怎么可能?
我认为这是由于模型学习不正确,并且它了解到数据点的顺序在这些数据点的预测中起作用。但这不应该发生,因为我只是试图(如 MNIST 示例)分别预测每个数据点。这可能是一个小批量训练问题。
在上面提到的示例中,使用数据集和批次进行训练,模型是从 mini-batch 中所有数据点的平均值中学习,还是认为一个 mini-batch 是一个数据点并以这种方式学习(即将意味着数据的顺序问题)?
或者如果有其他建议。