Explanation toolbox for Keras models.
Project description
Keras Explain
This package includes the majority of explanation tools for explaining Keras models predictions. Currently, only models with images on input are supported. It supports following approaches:
Gradient methods:
- GradCam [Selvaraju]
- Guided GradCam [Selvaraju]
- Guided back-propagation [Springenberg]
- Integrated gradients [Sundararajan]
- Saliency [Simonyan]
- Layer-wise relevance propagation [BETA] [Bach]
Model-independent methods:
All approaches are easy to apply to your model in two lines of code. If you have any suggestion for new approaches to be included in the package please do not hesitate to suggest. Also all improvements suggestions, bug reports and bug fixes are welcome.
Right now we are in the process of implementing the following approaches:
- Meaningful perturbation by Fong et al.
- Layer-wise relevance propagation - we are adding layers that are not supported yet.
Usage
Gradient methods
GradCam
from keras_explain.grad_cam import GradCam
explainer = GradCam(model, layer=None)
exp = explainer.explain(image, target_class)
Parameters:
model
- Keras model which is explainedimage
- input which prediction is explainedtarget_class
- approach explains prediction for a target classlayer
- (optional) The index (index in model.layers) of the layer which prediction is explained. If not specified the last layer prediction is explained automatically.
Output:
exp
- explanation. GradCam mark only features which contribute to the classification in atarget class
.
Guided GradCam
from keras_explain.grad_cam import GuidedGradCam
explainer = GuidedGradCam(model, lyer=None)
exp = explainer.explain(image, target_class)
Parameters:
model
- Keras model which is explainedimage
- input which prediction is explainedtarget_class
- approach explains prediction for a target classlayer
- (optional) The index (index in model.layers) of the layer which prediction is explained. If not specified the last layer prediction is explained automatically.
Output:
exp
- explanation. GuidedGradCam mark only features which contribute to the classification in atarget class
.
Guided back-propagation
from keras_explain.guided_bp import GuidedBP
explainer = GuidedBP(model)
exp = explainer.explain(image, target_class)
Parameters:
model
- Keras model which is explainedimage
- input which prediction is explainedtarget_class
- approach explains prediction for a target class
Output:
exp
- explanation. Guided back-propagation mark only features which contribute to the classification in atarget class
.
Integrated gradients
from keras_explain.integrated_gradients import IntegratedGradients
explainer = IntegratedGradients(model)
exp = explainer.explain(image, target_class)
Parameters:
model
- Keras model which is explainedimage
- input which prediction is explainedtarget_class
- approach explains prediction for a target class
Output:
exp
- explanation. Integrated gradients mark only features which contribute to the classification in atarget class
.
Saliency
from keras_explain.saliency import Saliency
explainer = Saliency(model, layer=None)
exp = explainer.explain(image, target_class)
Parameters:
model
- Keras model which is explainedimage
- input which prediction is explainedtarget_class
- approach explains prediction for a target classlayer
- (optional) The index (index in model.layers) of the layer which prediction is explained. If not specified the last layer prediction is explained automatically.
Output:
exp
- explanation. Saliency mark only features which contribute to the classification in atarget class
.
Layer-wise relevance propagation [BETA]
This approach does not support all layers yet. We are currently implementing missing layers. If you wish you can implement any layer support yourself and submit it as a pull request. Since implementation is very custom any suggestion for improvement is welcome.
from keras_explain.lrp import LRP
explainer = LRP(model)
exp = explainer.explain(image, target_class)
Parameters:
model
- Keras model which is explainedimage
- input which prediction is explainedtarget_class
- approach explains prediction for a target class
Output:
exp
- explanation. LRP mark only features which contribute to the classification in atarget class
.
###Model independent approaches
Prediction difference
from keras_explain.prediction_diff import PredictionDiff
explainer = PredictionDiff(model)
exp_pos, exp_neg = explainer.explain(image, target_class)
Parameters:
model
- Keras model which is explainedimage
- input which prediction is explainedtarget_class
- approach explains prediction for a target class
Output:
exp_pos
- explanation with marked features which contribute to the classification in atarget class
.exp_neg
- explanation with marked features which contribute against the classification in atarget class
.
Basic graying out
from keras_explain.graying_out import GrayingOut
explainer = GrayingOut(model)
exp_pos, exp_neg = explainer.explain(image, target_class)
Parameters:
model
- Keras model which is explainedimage
- input which prediction is explainedtarget_class
- approach explains prediction for a target class
Output:
exp_pos
- explanation with marked features which contribute to the classification in atarget class
.exp_neg
- explanation with marked features which contribute against the classification in atarget class
.
LIME
from keras_explain.lime_ribeiro import Lime
explainer = Lime(model)
exp_pos, exp_neg = explainer.explain(image, target_class)
Parameters:
model
- Keras model which is explainedimage
- input which prediction is explainedtarget_class
- approach explains prediction for a target class
Output:
exp_pos
- explanation with marked features which contribute to the classification in atarget class
.exp_neg
- explanation with marked features which contribute against the classification in atarget class
.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file keras-explain-0.0.1.tar.gz
.
File metadata
- Download URL: keras-explain-0.0.1.tar.gz
- Upload date:
- Size: 22.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/39.1.0 requests-toolbelt/0.8.0 tqdm/4.25.0 CPython/3.6.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0a03f143b7c7965d6024593cb33e158573eb7cc9f6612d04d2f1cea729d9d80f |
|
MD5 | 5a99c39d13a28cc44f130e2973eaa49b |
|
BLAKE2b-256 | d635b9b3f20e66b5ec0458112af67565689b3ee77faeb52a12d69ad61cd35ef5 |
File details
Details for the file keras_explain-0.0.1-py3-none-any.whl
.
File metadata
- Download URL: keras_explain-0.0.1-py3-none-any.whl
- Upload date:
- Size: 27.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/39.1.0 requests-toolbelt/0.8.0 tqdm/4.25.0 CPython/3.6.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8c517ecfc39e34e5a677479b321f681bedba825196dbd7d34867f6a25bce15e3 |
|
MD5 | e50cc4d80b31341d66efbea73820d0f2 |
|
BLAKE2b-256 | 1f38bc42ad08465f796e34ac8944762d7e8580f3f31364c49d29cbadf46aa97b |