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

Keras模型预测时报形状不匹配错误,实际检查形状符合预期

解决Keras预测时的形状不匹配问题

这种看起来矛盾的报错我可太熟了!明明自己查了输入形状是对的,怎么模型还不认?其实问题出在Keras对输入维度的隐性要求上——你的模型期望接收的是批量输入数据,而不是单个样本的一维数组。

问题到底出在哪?

你看到sequences_matrix.shape输出是(150,),这说明这是一个一维数组,代表单个长度为150的样本。但Keras的predict方法默认要求输入是批量格式:也就是形状为(样本数量, 特征数)的二维数组。当你直接传入一维数组时,Keras会误把它解析成「150个样本,每个样本只有1个特征」,这就和你的输入层期望的「每个样本150个特征」完全不匹配,所以才会抛出expected Inputs to have shape (150,) but got array with shape (1,)的错误。

快速解决办法

只需要给你的输入数组增加一个维度,把它变成「1个样本,150个特征」的二维格式就行,有几种简单的方式:

  • 用NumPy的expand_dims:
    import numpy as np
    sequences_matrix = np.expand_dims(sequences_matrix, axis=0)
    # 现在shape会变成(1, 150),符合模型要求
    
  • 或者用索引语法快速加维度:
    sequences_matrix = sequences_matrix[np.newaxis, :]
    
  • 如果用TensorFlow张量的话,也可以用tf.expand_dims:
    import tensorflow as tf
    sequences_matrix = tf.expand_dims(sequences_matrix, 0)
    

调整完形状后再运行predict = model.predict(sequences_matrix),应该就能正常执行了。

补充说明

你的输入层定义的Input(shape=(150,))是在描述单个样本的形状,而Keras的所有训练/预测方法都默认处理批量数据——这是框架设计时为了兼容批量计算优化的要求,所以哪怕你只预测一个样本,也得把它包装成批量的格式才行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 19:32:32