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

DeepFace调用VGG-Face预测时输入形状不兼容报错解决方法

错误原因

Keras框架下的深度学习模型输入固定为4维格式:(batch_size, height, width, channels),你打印出的模型输入形状(None, 224, 224, 3)中,首位的None代表动态批次维度,哪怕仅输入单张图像做预测,这个维度也不能省略。
当前你传入的img形状为(224, 224, 3),缺失了最前置的批次维度,模型会错误将第一维的224识别为批次大小,后续维度顺次错位,最终抛出形状不匹配的错误。

修复方法

在传入模型前,给img在第0轴(最前端)增加一个值为1的批次维度即可,两种实现方式都可正常运行:

  • 方式1:使用numpy的维度扩展方法,不需要硬编码图像尺寸,通用性更好
import numpy as np

# 原有代码
model = DeepFace.build_model('VGG-Face')
print(img.shape) # (224, 224, 3)
print(model.input_shape) # (None, 224, 224, 3)

# 新增:扩展批次维度
img = np.expand_dims(img, axis=0)
# 扩展后img形状为(1, 224, 224, 3),完全匹配模型输入要求

representation = model.predict(img)
print(representation)
return representation
  • 方式2:直接reshape指定形状,适合明确知道输入尺寸的场景
img = img.reshape(1, 224, 224, 3)

补充注意:VGG-Face预训练模型要求输入像素值范围为0-255,如果你提前把图像像素归一化到0-1区间,会导致输出的特征表示异常,这点如果后续预测准确率异常可以优先排查。

内容的提问来源于stack exchange,提问作者Tlaloc-ES

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 21:33:25