如何正确设置TensorFlow Sequential模型输入层的shape?
问题原因与解决方案
核心错误点
你设置的输入层参数完全错误,问题源于对Keras全连接层input_shape参数的定义理解偏差:
- 你的训练集形状
(5420, 212)中,第一个值5420是训练样本总数量,第二个值212才是单条样本的特征数量 - Keras的
input_shape参数不需要传入样本总数,仅需要指定单条样本的特征维度,样本数量、batch大小会由框架自动适配,无需手动声明
报错逻辑
你设置input_shape = (5420,)相当于告诉模型:单条输入样本需要有5420个特征,但实际你的单条样本只有212个特征,因此触发维度不匹配的报错。
修正方案
只需要修改输入层的input_shape参数即可,修正后的完整代码如下:
model = models.Sequential() # 仅修改这一行的input_shape值为212即可 model.add(layers.Dense(64, activation='relu', input_shape = (212,))) model.add(layers.Dense(64, activation='relu')) model.add(layers.Dense(5, activation='softmax')) model.compile(optimizer='rmsprop', loss='categorical_crossentropy', metrics=['accuracy']) model.summary() history = model.fit(X_train, y_train, epochs=20, batch_size=512)
额外说明
全连接层(Dense)的输入仅需要指定特征维度即可,只有处理图像、时序等结构化数据的卷积层、循环层才需要传入更高维度的输入形状。
内容的提问来源于stack exchange,提问作者Fabio
相关产品推荐
相关产品推荐

