You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何利用多数据集训练LSTM模型实现时间序列预测?

多文件时间序列LSTM训练的优化问题

我需要用LSTM模型做时间序列预测,数据集由3个结构完全一致的Excel文件组成:每个文件都是设备每分钟采集1个数值,实验时长相同,单文件的数据量完全一致。

单文件训练时,我可以将数据整理成*(样本数, 时间步长, 特征数)的3维张量,模型能正常运行。但同时处理3个文件时,得到的输入张量形状是(3, 252, 1, 1)*的4维结构,而LSTM层仅支持3维输入,无法直接使用。

我尝试过两种处理方式:

  • 拼接数据集训练:将3个文件的数据拼接成单个数据集,设置batch_size=252(单文件的样本数)来避免不同实验数据混合,但最终预测效果远不如单实验训练的结果。实现代码如下:
def build_model():
  model = keras.Sequential([
    layers.Masking(mask_value = 0.0, input_shape=[1,1]),
    layers.LSTM(50, return_sequences=True),
    layers.Dense(1)
  ])

  optimizer = tf.keras.optimizers.Adam(0.001)

  model.compile(loss='mse',
                optimizer=optimizer,
                metrics=['mae','RootMeanSquaredError'])
  return model

model_pred = build_model()
model_pred.fit(Xchopped_train, ychopped_train, batch_size = 252,
               epochs=500, verbose=1)

其中Xchopped_train和ychopped_train是3个Excel文件拼接后的数据集。

  • 循环单文件训练:遍历每个文件单独训练,每个文件训练167轮,目前这个方法的预测效果最好,但我不清楚这种训练方式下神经网络权重的更新逻辑、损失函数的优化过程,想咨询是否有更高效的实现方式。实现代码如下:
for i in range(len(Xtrain)):
    model_pred.fit(Xtrain[i], Ytrain[i], epochs=167, verbose=1)

Xtrain的形状为(3,252,1,1),第一个索引对应Excel文件的序号。

内容的提问来源于stack exchange,提问作者Duktti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 12:05:16