你会提示我,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 的示例。