首页 > 解决方案 > 对每个训练数据集使用 keras 模型多次拟合

问题描述

我有时间序列 10 个数据文件。其中我正在训练一个具有 5 个数据文件的 LSTM 模型,使用 3 个文件进行验证并使用 2 个文件进行测试。我使用了 Keras 的 fit_generator 并为训练和验证数据帧编写了一个生成器函数。但不幸的是,在预测期间,它的初始预测远高于原始目标。

另一方面,如果我对每个数据帧使用 model.fit,那么相对而言我会得到更好的结果。我的问题:“对于每个数据文件都是独立的(例如,每个包含从 0 小时到 24 小时的评级)的时间序列数据,在每个数据文件的每次迭代中使用拟合是否正确?”

for scaled_dataset in training_list:

    reframed_new = series_to_supervised(scaled_dataset, n_in, n_out)


    values = reframed_new.values
    train = values
    # split into input and outputs
    train_X, train_y = train[:, :-1], train[:, -1]
    # reshape input to be 3D [samples, timesteps, features]
    train_X = train_X.reshape((train_X.shape[0], 1, train_X.shape[1]))
    model.fit(train_X, train_y, epochs=50, batch_size=475, validation_data=None, verbose=1, shuffle=False)

在我的代码训练列表中包含所有单独的 5 个数据帧。因此,在每次迭代中,我都会拟合一个模型。任何人都可以告诉我这是正确的方法还是不提前谢谢

标签: python-3.xmachine-learningkerastime-series

解决方案


这是我从你的问题中理解的:

  • 您有 10 个不同的时间序列文件,它们都包含单独的数据,范围从 0hrs 到 24hrs。我的第一个问题是这些文件的顺序是什么,意思是文件没有。1 和文件编号。2等属于同一个序列?

    1. 如果是,您可以尝试附加这些数据帧并训练一个简单的预测模型并查看结果。
    2. 由于您所有的文件范围从 0 小时到 24 小时,您可以设置batch_size等于您的文件长度。生成器函数在您不知道数据集的结尾或时间序列长度不同的情况下很有用。

如果否,您必须针对不同的时间序列训练不同的模型。


推荐阅读