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

基于Keras的LSTM自编码器多时间序列预测报错求助

修复你的LSTM自编码器训练错误

我帮你梳理下代码里的问题,以及对应的修正方案:

问题根源

你的代码存在两个关键疏漏,直接导致fit()调用报错:

  1. 模型未完成编译:Keras模型在训练前必须通过compile()方法指定优化器、损失函数等训练核心配置
  2. fit()参数缺失:你只传入了batch_size,但训练必需的输入数据x和目标数据y都没传——对于自编码器来说,输入和目标是同一个数据集

修正后的完整可运行代码

from keras.layers import Input, LSTM, RepeatVector
from keras.models import Model
from keras.optimizers import Adam

# 替换成你实际的变量值
window_length = 15  # 你的时间窗口长度
input_dim = 8       # 每个时间步的特征维度
latent_dim = 4      # 隐层编码维度
train_data = ...    # 你的训练数据集,形状为(rows, window_length, input_dim)

# 构建LSTM自编码器结构
inputs = Input(shape=(window_length, input_dim))
encoded = LSTM(latent_dim)(inputs)
decoded = RepeatVector(window_length)(encoded)
decoded = LSTM(input_dim, return_sequences=True)(decoded)

model = Model(inputs, decoded)

# 关键步骤:编译模型
model.compile(
    optimizer=Adam(learning_rate=0.001),
    loss='mse'  # 数值型时间序列常用均方误差作为损失
)

# 启动训练:自编码器的输入和目标是同一组数据
model.fit(
    x=train_data,
    y=train_data,
    batch_size=512,
    epochs=30,  # 根据需求调整训练轮数
    validation_split=0.1  # 可选:用10%数据做验证,监控过拟合情况
)

额外优化提示

  • 损失函数选择:如果处理的是分类类时间序列,可以把损失换成categorical_crossentropy
  • 优化器调整:Adam是通用且高效的选择,也可以根据场景换成SGD、RMSprop等
  • 模型验证:如果有单独的验证集,可以用validation_data=(val_data, val_data)替代validation_split

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:30:55