TensorFlow调用predict时报错期望dense输入shape为(3,)却得到(1,)如何解决?
报错原因及解决方案
核心原因
你遇到的维度不匹配报错来自两个常见问题:
- 运行环境存在历史模型残留:报错信息里提到的层名是
dense_7_input,说明当前运行环境中已经生成过7个Dense层,而你本次代码仅定义了1个Dense层,显然你反复在同一个运行环境中创建模型,没有清理旧的会话残留,tf.model变量实际指向的是你之前创建的input_dim=1的旧模型,而非本次代码定义的输入维度为3的模型。 - 预测输入格式不规范:你直接将Python原生嵌套列表传入
predict方法,部分旧版本TensorFlow/Keras对原生列表的维度解析存在异常,会错误识别输入维度。
修复方案
- 先清理TensorFlow会话残留,避免旧模型干扰,在定义模型前添加如下代码:
tf.keras.backend.clear_session()
如果还是不行可以直接重启Python运行内核,彻底清空历史变量。
2. 把预测阶段的输入转换为NumPy数组再传入,明确输入维度,修改预测代码如下:
# 预测分数 print("Your score will be ", tf.model.predict(np.array([[100, 70, 101]]))) print("Other scores will be ", tf.model.predict(np.array([[60, 70, 110], [90, 100, 80]])))
内容的提问来源于stack exchange,提问作者Deep learning element
相关产品推荐
相关产品推荐

