Vertex AI可解释性中为多输入Functional API模型指定inputTensorName
解决方案
针对多输入模型的解释功能,需为每个输入张量单独定义元数据条目,组成列表传入解释配置,具体步骤如下:
1. 生成多输入元数据列表
遍历所有输入张量名,根据特征类型配置对应元数据:
# 获取所有输入张量名 all_serving_inputs = list(loaded_model.signatures["serving_default"].structured_input_signature[1].keys()) # 为每个输入创建元数据条目 INPUT_METADATA_LIST = [] for input_name in all_serving_inputs: if input_name in NUM_COLS: # 数值特征元数据 metadata = { "input_tensor_name": input_name, "encoding": "BAG_OF_FEATURES", "modality": "numeric", "index_feature_mapping": [input_name] } elif input_name in ORD_COLS or input_name in OHE_COLS: # 分类特征元数据 metadata = { "input_tensor_name": input_name, "encoding": "BAG_OF_FEATURES", "modality": "categorical", "index_feature_mapping": [input_name] } INPUT_METADATA_LIST.append(metadata)
2. 配置批量预测的解释参数
在ModelBatchPredictOp中添加explanation_metadata和explanation_parameters,传入多输入元数据列表:
ModelBatchPredictOp( project=project_id, job_display_name="tensorflow-ex-batch-prediction-job", location=project_location, model=champion_model.outputs["model"], instances_format="csv", predictions_format="jsonl", gcs_source_uris=gcs_source_uris, gcs_destination_output_uri_prefix=gcs_destination_output_uri_prefix, machine_type=batch_prediction_machine_type, starting_replica_count=batch_prediction_min_replicas, max_replica_count=batch_prediction_max_replicas, generate_explanation=True, # 配置解释元数据 explanation_metadata={ "inputs": INPUT_METADATA_LIST, "outputs": [{"output_tensor_name": "output"}] # 匹配模型输出层名称 }, # 指定解释算法(以Sampled Shapley为例) explanation_parameters={ "sampled_shapley_attribution": { "path_count": 10 } } )
3. 关键注意事项
- 每个输入张量必须对应独立的元数据条目,
input_tensor_name需严格匹配模型输入层的名称 - 根据特征类型正确设置
modality:数值特征用numeric,分类特征用categorical,确保解释算法正确处理 - 输出元数据需指定模型的输出张量名,与模型定义中的
Dense(1, name="output")保持一致 - 使用CSV输入格式时,需保证GCS中CSV的列顺序与输入张量名的顺序匹配,或在元数据中明确映射列名
内容的提问来源于stack exchange,提问作者Kev_in
相关产品推荐
相关产品推荐

