Keras模型model.predict输出维度异常,求解释其输出含义
关于Keras模型predict输出形状的问题解答
首先咱们得明确:你遇到的问题核心是输入数据的形状不符合Keras模型的预期。
为什么会得到(8,2)的输出?
Keras的model.predict()方法默认要求输入是批量数据——也就是形状为(batch_size, input_features)的二维数组,其中第一维是样本数量,第二维是每个样本的特征数。
你说的“单条数据”如果是直接传入了形状为(8,)的一维数组,Keras会自动把它解读成「8个独立的样本,每个样本只有1个特征」。而你的模型输出维度是2,所以最终就生成了8个样本对应的预测结果,形状自然就是(8,2)——这就是你看到那8组二维结果的由来。
这个输出实际代表什么?
你现在拿到的8组[a, b]数值,其实是模型把你输入的8个单个数值当成8个独立输入后,分别给出的预测输出。但这肯定不是你想要的,因为你的初衷是让模型处理1个包含8个特征的样本。
如何得到正确的单样本预测结果?
解决方法很简单,只要给你的单条数据增加一个「批量维度」,把它转换成模型期望的输入格式:
- 如果你用的是numpy数组,可以用
np.expand_dims(your_single_data, axis=0),这样输入形状就变成了(1,8) - 或者直接用列表把数据包起来:
model.predict([your_single_data])
这样处理后,model.predict()会返回形状为(1,2)的结果,这才是你真正需要的、对应单条8特征样本的二维输出。
内容的提问来源于stack exchange,提问作者Erland Devona
相关产品推荐
相关产品推荐

