ClipByValue 不存在于 Shap 包的 tf_ops._gradient_registry._registry

Posted

技术标签:

【中文标题】ClipByValue 不存在于 Shap 包的 tf_ops._gradient_registry._registry【英文标题】:ClipByValue not present in tf_ops._gradient_registry._registry for Shap package 【发布时间】:2019-01-02 23:30:14 【问题描述】:

我尝试使用 python 中的shap 包的this 示例来解释我的深度学习模型。

当我拨打 explainer.shap_values(test[:2]) 时,我收到了一个 Keyerror - ClipByValue。

我的tf_ops._gradient_registry._registry 中显然没有 ClipByValue。

【问题讨论】:

【参考方案1】:

我今天也遇到了这个问题。

在我的调查中,我已经在 Shap 中隔离了这个问题。 v0.19.3 版本工作正常,但 v0.19.4 版本不是因为 ClipByValue 不存在 - 而且,对于标签 V0.19.3,ClipByValue 未列在非线性中:https://github.com/slundberg/shap/blob/V0.19.3/shap/explainers/deep.py#L44。所以看起来这个特定的例子从来没有使用过 ClipByValue 被包含在所述数组中。

为了解决这个问题,我将 requirements.txt 中的 shap==v0.21.0 替换为

-e git://github.com/slundberg/shap.git@48bc3a7f8fa9465be778ecef14d4de8604275f7f#egg=shap

然后,在我的 python virtualenv 中,导航到克隆的文件夹,签出一个新分支,然后将标签 V0.19.3 的 deep.py 版本粘贴到当前存在的内容之上。虽然有点破解......

不确定如何正确解决此问题。

【讨论】:

非常感谢。我在本地副本的安装文件中将版本更改为 0.19.3。然后说导入设置。它奏效了。

以上是关于ClipByValue 不存在于 Shap 包的 tf_ops._gradient_registry._registry的主要内容,如果未能解决你的问题,请参考以下文章

用于可解释机器学习的 Shapley 值和 SHAP 之间的差异

Py之shap:shap.explainers.shap_values函数的简介解读(shap_values[1]索引为1的原因)使用方法之详细攻略

真香!利用 Shap 可完美实现机器学习模型输出可视化!

SHAP:shap_values 计算中的 XGBoost 和 LightGBM 差异

显示不应该存在的文件的主包的内容

用于 RandomForest 多类的 SHAP TreeExplainer:啥是 shap_values[i]?