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

Keras中LSTM层传input_shape等参数报错,求助输入形状定义位置

问题解决:LSTM层参数报错的原因及修正方案

核心问题

你自定义的函数名LSTM和Keras内置的LSTM层重名了,导致代码里调用的是你自己写的函数,而非Keras的LSTM层,所以会出现“不认识input_shape、return_sequences参数”的错误。

修正步骤

  1. 重命名自定义函数
    把你的模型构建函数改名,比如改成build_lstm_model,避免和Keras的LSTM层冲突。

  2. 确保正确导入Keras的LSTM层
    确认代码开头有正确的导入语句:

# TensorFlow Keras
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import LSTM, Dense

# 或者原生Keras
from keras.models import Sequential
from keras.layers import LSTM, Dense
  1. 修正后的代码示例
def build_lstm_model(structure):
    model = Sequential()
    # 这里调用的是Keras的LSTM层,可正常使用input_shape、return_sequences参数
    model.add(LSTM(20, input_shape=(data["X_train"].shape[1], data["X_train"].shape[2]), return_sequences=True))
    model.add(Dense(units=1, activation='linear'))
    return model

输入形状的定义方式

在Sequential模型中,输入形状有两种常用定义方式:

  • 直接在第一个层(比如LSTM)上通过input_shape参数指定,格式为(时间步长, 特征数),不需要包含批量维度。
  • 先添加Input层明确输入形状,再连接后续层:
from tensorflow.keras.layers import Input

def build_lstm_model(structure):
    model = Sequential()
    model.add(Input(shape=(data["X_train"].shape[1], data["X_train"].shape[2])))
    model.add(LSTM(20, return_sequences=True))
    model.add(Dense(units=1, activation='linear'))
    return model

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 17:54:57