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

TensorFlow Keras搭建序列模型时输出形状异常原因咨询

问题原因

输出形状不符合预期的核心原因是两层LSTM都配置了return_sequences=True:

  • 该参数为True时,LSTM会返回所有时间步的隐藏状态,输出形状为(batch_size, 时间步长度, 隐藏层维度);参数为False(默认值)时,才只会返回最后一个时间步的输出,形状为(batch_size, 隐藏层维度)。
  • 你的输入是单样本含3个值的数组,进入Conv1D时会按时间步维度处理,两层LSTM都返回全序列的情况下,后续Dense层会逐时间步做全连接计算,最终输出形状会保留3个时间步的维度,和输入时间步长度一致,自然无法输出单个浮点数标签。
修复方案

将第二层LSTM的return_sequences参数改为False(直接删除该参数配置即可,默认就是False),让第二层LSTM仅输出最后一个时间步的特征,后续全连接层就会输出单个预测值:

model = tf.keras.models.Sequential([
    tf.keras.layers.Conv1D(filters=128, kernel_size=1,strides=1, padding="causal",activation="relu"), 
    tf.keras.layers.LSTM(128, return_sequences=True), 
    tf.keras.layers.LSTM(128), # 移除return_sequences=True配置,仅返回最后一个时间步输出
    tf.keras.layers.Dense(10, activation="relu"), 
    tf.keras.layers.Dense(1)
])
model.compile(
    loss=tf.losses.MeanSquaredError(), 
    metrics=[
        tf.keras.metrics.MeanSquaredError(name='my_mse'), 
        tf.keras.metrics.RootMeanSquaredError(name='my_rmse'), 
        tf.keras.metrics.MeanAbsoluteError(name='my_mae')
    ]
)

额外提醒:Conv1D、LSTM层要求输入为3维格式(样本数, 时间步长, 特征数),如果你的原始输入是形状为(样本数, 3)的二维数组,需要先reshape为(样本数, 3, 1)再传入模型,否则会触发维度不匹配报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 04:27:14