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

Keras调用predict函数报层输入形状不兼容ValueError求助

Keras调用predict时输入维度不匹配报错解决

问题现象

调用Keras的predict方法执行预测时,提前打印预测数据集形状为预期的(2, 90),对应2条样本、单条样本90个输入特征,但运行时抛出维度不匹配错误。

复现代码

scaler = MinMaxScaler()
scaler2 = MinMaxScaler()

normalized_data = scaler.fit_transform(dataset)
normalized_predict_data = scaler2.fit_transform(predict_dataset)

x = normalized_data[:, 0:90]
y = normalized_data[:, 90]

z = normalized_predict_data[:, 0:90]
print(z.shape)

x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=10)
print(x_train.shape, x_test.shape, y_train.shape, y_test.shape)

model = Sequential()
model.add(Dense(4, input_dim=90, activation='relu'))
model.add(Dense(32, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(16, activation='relu'))
model.add(Dense(1, activation='sigmoid'))

model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])

history = model.fit(x_train, y_train, validation_split=0.33, epochs=50, batch_size=100, verbose=0)

loss, accuracy = model.evaluate(x_test, y_test, verbose=0)
print("Model loss: %.2f, Accuracy: %.2f" % ((loss * 100), (accuracy * 100)))

Xnew = z
ynew = model.predict(array([Xnew]))

for item in Xnew:
    print("X=%s, Predicted=%s" % (item, ynew[0]))

报错信息

ValueError: Input 0 of layer "sequential" is incompatible with the layer: expected shape=(None, 90), found shape=(None, 2, 90)

错误原因

  • 报错中的None是Keras对批量样本维度的固定占位标识,代表可接收任意数量的输入样本,并非异常新增的维度,模型要求的输入形状(None, 90)属于正常定义,对应「N条样本、每条90个特征」的输入格式。
  • 维度不匹配的核心问题是预测输入构造错误:z本身形状已经是符合要求的(2, 90),但写array([Xnew])时相当于在原数组外额外嵌套了一层,将输入形状从(2, 90)改成了(1, 2, 90),Keras识别批量维度后,最终传入模型的输入形状就成了报错显示的(None, 2, 90),和模型要求的形状不符。
  • 原有结果打印逻辑存在缺陷:无论输入多少条待预测样本,代码只会固定输出第一条样本的预测值。

修复方案

直接传入符合形状要求的输入即可,同时修正结果遍历逻辑,修改后的预测相关代码如下:

Xnew = z
# 无需额外嵌套数组,直接传入形状为(2,90)的Xnew
ynew = model.predict(Xnew)

# 同步遍历样本和对应的预测结果
for item, pred in zip(Xnew, ynew):
    print("X=%s, Predicted=%s" % (item, pred))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 18:48:27