Colab可运行的多层LSTM模型在Kaggle出现维度不兼容错误
问题分析与解决方案
核心问题:LSTM输入维度不匹配
你的LSTM模型第一层定义了input_shape=(4, 1),要求输入数据是3维张量(样本数,时间步长,特征数),但当前X_train和X_test是2维结构(样本数, 4),缺少了特征维度,因此Kaggle环境直接抛出维度不兼容错误。
为什么Colab能正常运行?
核心原因是Colab与Kaggle的TensorFlow版本差异:
- 旧版本TensorFlow(如2.5及更早)会自动为输入数据补全缺失的特征维度,即把
(N,4)自动转为(N,4,1),适配模型输入要求 - Kaggle当前默认的TensorFlow版本更严格,不会自动补全维度,因此直接触发报错
解决方案:手动扩展数据维度
在训练前给X_train和X_test增加特征维度,代码如下:
import numpy as np X_train = np.expand_dims(X_train, axis=-1) # 形状变为(38406, 4, 1) X_test = np.expand_dims(X_test, axis=-1) # 形状变为(9635, 4, 1)
修改后再执行model.fit即可解决报错。
验证修改后的维度
可通过打印确认维度是否符合要求:
print(X_train.shape) # 预期输出:(38406, 4, 1) print(X_test.shape) # 预期输出:(9635, 4, 1)
内容的提问来源于stack exchange,提问作者michele.damian
相关产品推荐
相关产品推荐

