2

你会提示我,shap.GradientExplainer()在 SHAP 库中放入什么参数(使用 Tensorflow 2.0)。

互联网上只有一个与图像分类相关的例子。在示例中,该函数接受 2 个输入作为第一个参数:

model.layers[7].input, model.layers[-1].output

完整的代码片段:

# explain how the input to the 7th layer of the model explains the top two classes
def map2layer(x, layer):
    feed_dict = dict(zip([model.layers[0].input], [preprocess_input(x.copy())]))
    return K.get_session().run(model.layers[layer].input, feed_dict)
e = shap.GradientExplainer((model.layers[7].input, model.layers[-1].output), map2layer(preprocess_input(X.copy()), 7))
shap_values,indexes = e.shap_values(map2layer(to_explain, 7), ranked_outputs=2)

但我的模型是顺序的,请参见此处。当我尝试将 2 个输入作为第一个参数时

shap_values = explainer.shap_values((model.input, model.output))

, 发生错误

Layer sequential expects 1 inputs, but it received 2 input tensors. 

当我使用 1 个输入时

shap_values = explainer.shap_values(model.output)

,出现另一个错误:

Input 0 of layer sequential is incompatible with the layer: expected axis -1 of input shape to have value 46 but received input with shape `[None, 1]`

然后,我尝试从数据集中输入数据:

shap_values = explainer.shap_values(df3.to_numpy()[:100,:])

发生错误:

KeyError: 31467

如果您没有答案,您可能知道另一个使用 GradientExplainer 的示例。

4

0 回答 0