解读PyTorch的深度学习模式。
interpret-pytorch的Python项目详细描述
Pythorch解释
一个简单易用的Pythorch库,用于解释你的深度学习结果,使用可视化和属性。灵感来自TensorFlow Lucid。在
安装
从PyPI安装:
pip install interpret-pytorch
或者,从GitHub安装最新代码:
^{pr2}$依赖性
interpret
需要Pythorch的有效安装。在
目录
教程
使用googlecolab在浏览器中运行教程。在
Tutorial | Link |
---|---|
Introduction to ^{ | |
Visualisation Tutorial | |
Miscellaneous Methods Tutorial |
可视化
可视化是一种技术,它产生的输入优化一个特定的目标在一个训练有素的网络。通过使用可视化,我们可以理解网络在寻找什么。有关可视化的深入解释,请参见Feature Visualisation。在
Quickstart
生成可视化是通过加载一个经过训练的网络,选择要优化的目标并运行优化来完成的。显示了一个使用torchvision
中的预训练网络的示例。在
frominterpretimportOptVisimporttorchvision# Get the PyTorch neural networknetwork=torchvision.models.vgg11(pretrained=True)# Select a layer from the network. Use get_layer_names()# to see a list of layer names and sizes.layer='features/18'channel=12# Create an OptVis object from a PyTorch modeloptvis=OptVis.from_layer(network,layer=layer,channel=channel)# Create visualisationoptvis.vis()
参数
图像可以用几种不同的方式参数化。只要参数化是可微的,输入就可以针对特定层进行优化。有关代码示例,请参见Visualisation Tutorial Notebook。在
默认的参数化是在空间和颜色去相关的空间中。在
我们也可以在常规像素空间中参数化,但视觉效果往往更差。在
另一个参数化是一个构图生成网络(CPPN),它可以生成具有“光绘”效果的无限分辨率图像
目标
优化的目标也可以被操纵来创造不同的视觉效果。我们可以把目标加在一起得到复合目标,或者否定它们得到负神经元。有关示例,请参见Visualisation Tutorial Notebook。在
层目标
可以使用from_layer
OptVis类方法轻松创建layerObject。在这个函数中,我们可以选择要优化的层、通道和神经元。在这里我们可以针对特定神经元进行优化:
我们也可以手动创建两个目标,然后将它们相加,得到一个复合目标:
或者我们可以找到最小化特定神经元的否定目标:
层次目标相当灵活。您可以选择网络中的任何层并捕获该层的输出。我们可以可视化网络的最后一层,生成ImageNet中不同类的类可视化。在
深度梦想目标
深度梦想目标优化了整个层的“趣味性”。我们可以从输入图像创建这个目标,并使用from_dream
类方法选择一个层。在
属性
网络属性是通过将一个特定的输入输入输入到训练的网络中并生成一个显著性图来完成的,该图显示了网络高度激活的部分图像。在
Quickstart
frominterpretimportGradcam,normfromPILimportImageimporttorchvisionnetwork=torchvision.models.vgg11(pretrained=True)input_img=Image.open('image.jpg')# Normalise the input image and turn it into a tensorinput_data=norm(input_img)# Select the class that we are attributing toclass_number=207# Choose a layer for Grad-CAMlayer='features/20'# Generate a Grad-CAM attribution mapsaliency_map=Gradcam(network,input_data,im_class=class_number,layer=layer)saliency_map.show()
其他解释
包括在interpret
中的一些附加的解释方法,它们并不完全适合可视化或归因方法。在
eh3顶部损失>
绘制导致最大损失的输入。有助于识别您的网络最不确定的地方,或者输入的内容与给定的标签不符(标签错误的图像)。也可以为每个图像启用渐变凸轮属性覆盖,以便你可以知道网络在找什么。在
绘图混淆矩阵
为多类分类或二元回归目标绘制混淆矩阵。在
绘图数据集示例
绘制一些数据集示例,使上述可视化目标中的特定LayerObjective
最大化。有助于识别网络在特定可视化中使用真实示例寻找的清晰示例。在
- 项目
标签: