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

使用SHAP GradientExplainer分析Inception V3时遇输入张量错误求助

解决Inception V3 + SHAP GradientExplainer的输入匹配问题

我之前成功用GradientExplainer可视化过Inception V3的结果,你的错误核心就是输入数据的形状/ dtype和模型输入层要求不匹配,和Inception V3的299×299输入尺寸直接相关,以下是具体排查和解决步骤:

  • 确认输入数据的基本属性

    1. 检查形状:输入样本必须是(样本数, 299, 299, 3),别沿用VGG/MobileNet的224尺寸。单张图要扩展维度成(1,299,299,3)(比如用np.expand_dims(img, axis=0)),可以用x.shape查看当前形状。
    2. 检查数据类型:模型输入要求float类型,确保数据是float32或float64,别是直接读入图片的uint8格式。用x.dtype查看,不对的话转换:x = x.astype('float32')。
  • 核对模型输入层的要求
    打印模型输入层信息确认:

    print(model.input)
    

    输出应类似Tensor("input_1:0", shape=(None, 299, 299, 3), dtype=float32),如果形状不对,说明加载模型时输入层设置有误。

  • 正确的代码示例流程

    import shap
    import numpy as np
    from tensorflow.keras.applications.inception_v3 import InceptionV3, preprocess_input
    
    # 加载训练好的模型
    model = InceptionV3(weights='your_trained_weights.h5', include_top=True, input_shape=(299,299,3))
    
    # 准备测试样本
    img = load_your_image() # 自行实现加载逻辑,确保尺寸为299×299×3
    img = preprocess_input(img) # 用官方预处理,符合模型输入要求
    x = np.expand_dims(img, axis=0) # 扩展批量维度
    
    # 初始化GradientExplainer并计算SHAP值
    explainer = shap.GradientExplainer(model, x)
    shap_values = explainer.shap_values(x)
    
    # 可视化结果
    shap.image_plot(shap_values, x)
    
  • 容易踩的坑

    • 预处理错误:InceptionV3的预处理不是简单除以255,而是(x / 255.0 - 0.5) * 2,用官方preprocess_input最稳妥。
    • 背景样本不匹配:如果用背景样本初始化GradientExplainer,背景样本的形状、dtype必须和输入样本完全一致,不能用224尺寸的背景数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 12:55:18