跳转到主要内容

Tensorflow 2.0的可解释性回调

项目描述

tf-explain

Pypi Version Build Status Documentation Status Python Versions Tensorflow Versions Code style: black

tf-explain 将可解释性方法作为Tensorflow 2.x回调实现,以 简化神经网络的理解。请参阅 介绍tf-explain,Tensorflow 2.0的可解释性

文档: https://tf-explain.readthedocs.io

安装

tf-explain 作为alpha版本在PyPi上可用。要安装它

virtualenv venv -p python3.8
pip install tf-explain

tf-explain 与Tensorflow 2.x兼容。它未声明为依赖项,让您选择完整版和独立-CPU版本。除了之前的安装外,请运行

# For CPU or GPU
pip install tensorflow==2.6.0

OpenCV也是依赖项。要安装它,运行

# For CPU or GPU
pip install opencv-python

快速入门

tf-explain 提供了两种应用可解释性方法的方式。方法列表的完整列表请参阅 可用方法 部分。

在训练模型上

最好的选择可能是加载一个训练好的模型并在其上应用方法。

# Load pretrained model or your own
model = tf.keras.applications.vgg16.VGG16(weights="imagenet", include_top=True)

# Load a sample image (or multiple ones)
img = tf.keras.preprocessing.image.load_img(IMAGE_PATH, target_size=(224, 224))
img = tf.keras.preprocessing.image.img_to_array(img)
data = ([img], None)

# Start explainer
explainer = GradCAM()
grid = explainer.explain(data, model, class_index=281)  # 281 is the tabby cat index in ImageNet

explainer.save(grid, ".", "grad_cam.png")

训练过程中

如果您想在训练过程中跟踪您的模型,您也可以将其用作Keras回调,并在TensorBoard中直接查看结果。

from tf_explain.callbacks.grad_cam import GradCAMCallback

model = [...]

callbacks = [
    GradCAMCallback(
        validation_data=(x_val, y_val),
        class_index=0,
        output_dir=output_dir,
    )
]

model.fit(x_train, y_train, batch_size=2, epochs=2, callbacks=callbacks)

可用方法

  1. 激活可视化
  2. 基础梯度
  3. 梯度*输入
  4. 遮挡敏感性
  5. Grad CAM(类别激活图)
  6. SmoothGrad
  7. 集成梯度

激活可视化

可视化给定输入如何从特定的激活层输出

from tf_explain.callbacks.activations_visualization import ActivationsVisualizationCallback

model = [...]

callbacks = [
    ActivationsVisualizationCallback(
        validation_data=(x_val, y_val),
        layers_name=["activation_1"],
        output_dir=output_dir,
    ),
]

model.fit(x_train, y_train, batch_size=2, epochs=2, callbacks=callbacks)

基础梯度

可视化输入图像上的梯度重要性

from tf_explain.callbacks.vanilla_gradients import VanillaGradientsCallback

model = [...]

callbacks = [
    VanillaGradientsCallback(
        validation_data=(x_val, y_val),
        class_index=0,
        output_dir=output_dir,
    ),
]

model.fit(x_train, y_train, batch_size=2, epochs=2, callbacks=callbacks)

梯度*输入

基础梯度的变体,通过输入值权衡梯度

from tf_explain.callbacks.gradients_inputs import GradientsInputsCallback

model = [...]

callbacks = [
    GradientsInputsCallback(
        validation_data=(x_val, y_val),
        class_index=0,
        output_dir=output_dir,
    ),
]

model.fit(x_train, y_train, batch_size=2, epochs=2, callbacks=callbacks)

遮挡敏感性

通过迭代遮挡图像的一部分来可视化图像的一部分如何影响神经网络的可信度

from tf_explain.callbacks.occlusion_sensitivity import OcclusionSensitivityCallback

model = [...]

callbacks = [
    OcclusionSensitivityCallback(
        validation_data=(x_val, y_val),
        class_index=0,
        patch_size=4,
        output_dir=output_dir,
    ),
]

model.fit(x_train, y_train, batch_size=2, epochs=2, callbacks=callbacks)

Tabby类的遮挡敏感性(条纹区分虎斑猫与其他ImageNet猫类)

Grad CAM

通过查看激活图来可视化图像的一部分如何影响神经网络的输出

来自Grad-CAM: 通过基于梯度的定位从深度网络中获取视觉解释

from tf_explain.callbacks.grad_cam import GradCAMCallback

model = [...]

callbacks = [
    GradCAMCallback(
        validation_data=(x_val, y_val),
        class_index=0,
        output_dir=output_dir,
    )
]

model.fit(x_train, y_train, batch_size=2, epochs=2, callbacks=callbacks)

SmoothGrad

可视化指向决策的输入上的稳定梯度

来自SmoothGrad: 通过添加噪声去除噪声

from tf_explain.callbacks.smoothgrad import SmoothGradCallback

model = [...]

callbacks = [
    SmoothGradCallback(
        validation_data=(x_val, y_val),
        class_index=0,
        num_samples=20,
        noise=1.,
        output_dir=output_dir,
    )
]

model.fit(x_train, y_train, batch_size=2, epochs=2, callbacks=callbacks)

集成梯度

可视化构建输入指向决策的过程中梯度的平均值

来自深度网络的公理化归因

from tf_explain.callbacks.integrated_gradients import IntegratedGradientsCallback

model = [...]

callbacks = [
    IntegratedGradientsCallback(
        validation_data=(x_val, y_val),
        class_index=0,
        n_steps=20,
        output_dir=output_dir,
    )
]

model.fit(x_train, y_train, batch_size=2, epochs=2, callbacks=callbacks)

路线图

贡献

要为该项目做出贡献,请阅读专门的章节

引用

可用的引用文件文件,可用于引用这项工作。

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪一个,请了解更多关于安装包的信息。

源分布

tf-explain-0.3.1.tar.gz (24.7 kB 查看哈希)

上传时间

构建分布

tf_explain-0.3.1-py3-none-any.whl (43.6 kB 查看哈希)

上传时间 Python 3

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页