使用 pytorch rnn 模型进行推断时的准确性损失

Loss of accuracy when inferring with a pytorch rnn model

我正在使用 pytorch RNN 模型训练一个模型,并且有多个 csv 文件来训练和推断。如果我训练文件 #1 并根据文件 #1 进行推断,我将得到大约 100% 的准确预测。如果我在文件 #1 上训练并推断文件 #4 或文件 #2,那么准确率会下降到 ~80%。这是我正在做的:

1. Read the file and separate the features (X) and labels (y) into two dataframes.
2. The range of my values, both features and labels, is high. So I apply scaling transformation.
3. Then I split data as train and test.
4. Instantiate model.train() and run train data through the rnn model. 
5. Instantiate model.eval() and get the predictions from the model with the test data.
6. Reverse scale the predictions.
7. Calculate mean-square error. 

到目前为止一切都很好。我的MSE非常非常低,这很好。

训练后,我需要推断一个随机选择的文件。这是我正在做的推理:

1. Read the single file and separate the features (X) and labels (y) into two dataframes.
2. Apply scaling transformation.
3. Instantiate model.eval().
4. Get the predictions.
5. Reverse scale the predictions

如果推理文件与训练文件相同准确率接近100%。如果我使用不同的文件进行推理,为什么准确性会下降?难道我做错了什么?不幸的是,由于保密原因,我不能分享代码。

根据评论中提供的额外信息,我认为这很可能是过度拟合的问题,而不是实施中的任何错误。

您的模型正在学习文件 #1 的 class 分布,然后可用于预测文件 #1 的测试集,但不会转换为其他测试集。

为了解决这个问题,我的建议是从所有可用文件中抽取一个训练集,使其更接近于测试集集合中的分布,而不是单个测试集。

深入研究其他 RNN 过拟合解决方案也可能是值得的。