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的原因)使用方法之详细攻略