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

Keras序列模型输入形状设置与实际输入shape不匹配报错咨询

错误原因

你给InputLayer传入的input_shape参数格式错误,Keras的输入层input_shape参数仅需要指定单条样本的维度,不需要包含数据集的总样本数维度:

  • 你的X_train_1形状是(2000, 20),其中第一个维度是总样本数,第二个维度是单条样本的特征数
  • 你直接传入X_train_1.shape作为input_shape,Keras会默认在最前面补一个batch维度,最终模型期待的输入形状为(None, 2000, 20)(三维)
  • 实际训练时每个batch输入的形状是(batch_size, 20)(比如报错里的(32, 20),是二维),维度不匹配就触发了报错。

修复方法

把input_shape参数修改为单条样本的维度即可,有两种写法可以选:

  1. 直接指定特征数:input_shape=(20,)
  2. 取X_train_1的特征维度:input_shape=X_train_1.shape[1:]

修改后的函数定义开头如下:

def build_model_1(n_hidden = 1, n_neurons = 30, learning_rate = 3e-3, input_shape = X_train_1.shape[1:]):

其他潜在问题提醒

你当前的代码还有两个隐含问题需要调整,避免后续报错:

  • 标签如果是1-10的整数编码,没有做one-hot转换的话,需要把损失函数从categorical_crossentropy换成SparseCategoricalCrossentropy,否则会出现维度不匹配报错
  • 你当前给metrics参数传入的是嵌套列表:先定义了metric = [tf.keras.metrics.Accuracy()],编译时又写了metrics=[metric],多套了一层列表,直接传metrics=metric即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 08:24:03