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

LSTM模型model.fit()报错:输入形状不兼容问题求助

解决LSTM输入形状不兼容问题

错误原因

LSTM层要求输入是3D张量,格式为(batch_size, timesteps, features)(批量大小、时间步长、特征数)。你的x_train是2D形状(320,6),只包含样本数和特征数,缺少时间步维度;同时你把input_shape设成了(320,6),这是错误的——input_shape只需要指定(timesteps, features),批量大小由batch_size参数自动处理(对应形状里的None)。

修复步骤

  • 给x_train增加时间步维度,把2D张量转成3D:
    使用numpy的expand_dims方法,在轴1的位置添加维度,让形状从(320,6)变成(320,1,6)(这里每个样本的时间步设为1,如果你有其他时间步逻辑可以调整这个值)。
    代码:x_train = np.expand_dims(x_train, axis=1)
  • 修改模型的input_shape参数为(1,6),对应时间步1、特征数6。
  • 重新构建模型并训练。

修改后的完整代码

import numpy as np
import keras

def build_modelLSTMlite(input_shape):
    model = keras.Sequential()
    model.add(keras.layers.LSTM(64, input_shape=input_shape))
    model.add(keras.layers.Dense(64, activation='relu'))
    model.add(keras.layers.Dropout(0.3))
    model.add(keras.layers.Dense(10, activation='softmax'))
    return model

# 给x_train增加时间步维度
x_train = np.expand_dims(x_train, axis=1)
# 传入正确的input_shape
model = build_modelLSTMlite(input_shape=(1,6))
optimiser = keras.optimizers.Adam(learning_rate=0.001)
model.compile(optimizer=optimiser,
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])
model.summary()
history = model.fit(x_train, y_train, batch_size=32, epochs=100)

额外说明

如果你的数据原本有时间步逻辑(比如每N个连续样本作为一个时间序列),那需要重新调整x_train的形状,比如把320个样本分成若干个长度为N的序列,形状变成(样本组数, N, 6),同时input_shape设为(N,6)。但如果每个样本就是独立的时间步(比如单步预测),上面的修复就足够了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 05:45:34