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

TensorFlow中输入与预测的形状不匹配问题求助

TensorFlow中输入与预测的形状不匹配问题求助

我最近在搭建一个TensorFlow/Keras模型,想让它学习从两个浮点数输入预测出一个浮点数结果,但遇到了预测阶段的形状不匹配问题,还怀疑训练效果糟糕也和这个有关,来向大家求助!

先给大家看我的模型定义与编译代码:

model = tf.keras.Sequential()
model.add( tf.keras.layers.InputLayer(shape=(2,)) )
model.add( tf.keras.layers.Dense(1024) )
model.add( tf.keras.layers.Dense(1024) )
model.add( tf.keras.layers.Dense(units=1) )

model.compile(loss="mean_squared_error", optimizer="adam", metrics=["mse"])

训练部分我用的是numpy数组作为数据集:trainData和trainRes都是numpy数组,其中trainData.shape是(10000, 2),trainRes.shape是(10000,)。训练代码如下:

model.fit(x=trainData, y=trainRes, epochs=12, batch_size=100)

训练看起来是正常执行的,所有epochs都能跑完,甚至model.evaluate(x=testData, y=testRes)也能运行——不过输出的MSE数值大得离谱。

但当我尝试预测单个样本时,比如运行:

res = model.predict(testData[0])

直接触发了错误,错误信息如下:

Invalid input shape for input Tensor("data:0", shape=(2,), dtype=float32). Expected shape (None, 2), but input has incompatible shape (2,)

Arguments received by Sequential.call():
  • inputs=tf.Tensor(shape=(2,), dtype=float32)
  • training=False
  • mask=None

奇怪的是,如果我用切片取一个batch的方式来预测,比如:

res = model.predict(testData[0:1])

就能成功运行,不过返回的是一个1x1的数组,而不是我想要的单个数值。

我现在的猜测是:是不是Keras在训练时把整个数组当成了单个输入单元,而不是逐行处理每个样本?这会不会也是训练效果极差、MSE居高不下的原因呢?

备注:内容来源于stack exchange,提问作者v010dya

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 12:37:59