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

TensorFlow函数式API模型无法训练,Sequential模型可正常运行

问题分析与解决

核心错误

你定义函数式API输入时,错误地将整个训练集的完整形状(包含样本数5761)传给了keras.Input的shape参数。Keras要求shape仅需指定单样本的特征形状,样本数量维度会由训练时的批次自动处理(默认用None占位)。

已知X_train.shape=(5761, 2, 1),其中5761是总样本数,(2,1)才是单样本的特征形状。但你写了inputs = keras.Input(shape=X_train.shape),导致模型期望输入形状为(None, 5761, 2, 1),而实际训练时每个批次的形状是(16, 2, 1),两者不匹配引发报错。

修正后的函数式API代码

将shape参数改为单样本的特征形状,即取X_train.shape中除样本数外的部分:

inputs = keras.Input(shape=X_train.shape[1:])  # 单样本形状为(2,1)
x = inputs
x = layers.Dense(64, activation="relu")(x)
x = layers.Dense(64, activation="relu")(x)
outputs = layers.Dense(1)(x)

model = keras.Model(inputs=inputs, outputs=outputs)

额外优化建议

  • Sequential模型能正常运行,是因为它会在首次喂入数据时自动推断输入形状,无需显式指定。
  • 你的任务是回归任务(使用MSE损失),函数式API编译时用metrics=['accuracy']不合适,建议和Sequential模型保持一致,使用MAE作为指标:
from tensorflow.keras.optimizers import Adam

adam = Adam(lr=0.001)
model.compile(optimizer=adam, loss='mse', metrics=['mae'])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 13:55:11