SageMaker模型可解释性监控基线任务报ValueError维度错误
解决SageMaker ModelExplainabilityMonitor的SHAP基线维度错误
核心问题分析
报错ValueError: Expected 2D array, got 1D array instead本质是SHAP基线数据的维度未被SageMaker预处理流程正确识别——即便传入List[List[float]],也可能在数据传递或内部转换时被扁平化。
具体修复步骤
强制声明基线数据的2D结构
用numpy数组显式构造2D结构后转成列表,避免手动构造时的隐性格式问题:import numpy as np # 假设特征均值为1D数组,例:[0.5, 0.3, 0.7] baseline_means = np.array([0.5, 0.3, 0.7]) # 转换为shape为(1, 特征数)的2D数组,再转成列表 shap_baseline = baseline_means.reshape(1, -1).tolist()生成的
shap_baseline为严格的[[0.5, 0.3, 0.7]]结构,确保不会被误判为1D。对齐特征列配置与基线顺序
确认DataConfig的features参数包含所有输入特征,且顺序和基线数据的特征顺序完全一致。特征列数量与基线长度不匹配,也会触发维度识别错误。验证模型输入格式
检查模型是否要求接收单样本的2D输入(如[[feature1, feature2,...]]),而非1D的[feature1, feature2,...]。可本地测试模型的predict方法,传入构造好的2D基线数据,确认能正常返回结果。规范S3存储基线的格式
若用S3 URI传入基线,确保存储文件为每行一个样本的结构:即使只有一个基线样本,也要写成一行多特征值(如CSV中一行是0.5,0.3,0.7,而非每个特征占一行)。同时确认ShapConfig中baseline_uri路径正确,且S3权限配置无误。
额外验证步骤
构造ShapConfig后,打印确认基线结构:
from sagemaker.model_monitor import ShapConfig shap_config = ShapConfig(baseline=shap_baseline, ...) print(shap_config.baseline) # 应输出类似[[0.5, 0.3, 0.7]]的结构
内容的提问来源于stack exchange,提问作者Irfan Danish
相关产品推荐
相关产品推荐

