Tensorflow 2.0的可解释性回调
项目描述
tf-explain
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)
可用方法
激活可视化
可视化给定输入如何从特定的激活层输出
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
可视化指向决策的输入上的稳定梯度
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)
路线图
- 子类API支持
- 其他方法
- 自动生成的API文档和文档测试
贡献
要为该项目做出贡献,请阅读专门的章节。
引用
可用的引用文件文件,可用于引用这项工作。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪一个,请了解更多关于安装包的信息。
源分布
tf-explain-0.3.1.tar.gz (24.7 kB 查看哈希)
构建分布
tf_explain-0.3.1-py3-none-any.whl (43.6 kB 查看哈希)