解读PyTorch的深度学习模式。

interpret-pytorch的Python项目详细描述


Pythorch解释

一个简单易用的Pythorch库,用于解释你的深度学习结果,使用可视化和属性。灵感来自TensorFlow Lucid。在

Build StatusCoverage Status


安装

从PyPI安装:

pip install interpret-pytorch

或者,从GitHub安装最新代码:

^{pr2}$

依赖性

interpret需要Pythorch的有效安装。在

目录

教程

使用googlecolab在浏览器中运行教程。在

TutorialLink
Introduction to ^{}Open In Colab
Visualisation TutorialOpen In Colab
Miscellaneous Methods TutorialOpen In Colab

可视化

Channel visualisations using pytorch interpret.

可视化是一种技术,它产生的输入优化一个特定的目标在一个训练有素的网络。通过使用可视化,我们可以理解网络在寻找什么。有关可视化的深入解释,请参见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。在

默认的参数化是在空间和颜色去相关的空间中。在

Decorrelated visualisations

我们也可以在常规像素空间中参数化,但视觉效果往往更差。在

Pixel space parameterised visualisations

另一个参数化是一个构图生成网络(CPPN),它可以生成具有“光绘”效果的无限分辨率图像

CPPN visualisations

目标

优化的目标也可以被操纵来创造不同的视觉效果。我们可以把目标加在一起得到复合目标,或者否定它们得到负神经元。有关示例,请参见Visualisation Tutorial Notebook。在

层目标

可以使用from_layerOptVis类方法轻松创建layerObject。在这个函数中,我们可以选择要优化的层、通道和神经元。在这里我们可以针对特定神经元进行优化:

Neuron visualisations

我们也可以手动创建两个目标,然后将它们相加,得到一个复合目标:

Compound activations between more than one objective

或者我们可以找到最小化特定神经元的否定目标:

Negative neurons minimise a particular activation

层次目标相当灵活。您可以选择网络中的任何层并捕获该层的输出。我们可以可视化网络的最后一层,生成ImageNet中不同类的类可视化。在

Class Visualisations

深度梦想目标

深度梦想目标优化了整个层的“趣味性”。我们可以从输入图像创建这个目标,并使用from_dream类方法选择一个层。在

Deep dream objective visualisations


属性

Attribution methods show where a neural network is looking when it makes a certain prediction.

网络属性是通过将一个特定的输入输入输入到训练的网络中并生成一个显著性图来完成的,该图显示了网络高度激活的部分图像。在

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顶部损失>

绘制导致最大损失的输入。有助于识别您的网络最不确定的地方,或者输入的内容与给定的标签不符(标签错误的图像)。也可以为每个图像启用渐变凸轮属性覆盖,以便你可以知道网络在找什么。在

Top losses plotted with Grad-CAM attribution overlay.

绘图混淆矩阵

为多类分类或二元回归目标绘制混淆矩阵。在

Confusion matrix on 10 classes

绘图数据集示例

绘制一些数据集示例,使上述可视化目标中的特定LayerObjective最大化。有助于识别网络在特定可视化中使用真实示例寻找的清晰示例。在

Comparison between a layer visualisation and dataset examples that also activate the same layer.

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
ArrayList中实体对象上的JAVA泛型   带Redis的爪哇芹菜vs单用Redis   java在设备面向横向时隐藏标题栏/通知栏   java JXTreeTable:如何使用ComponentProvider为一列设置渲染器   java创建异常的成本与记录异常的成本相比   java在方法参数中使用setter传递新对象   java在一个类中的方法与另一个类中的方法交互时遇到问题   java如何迭代2个大小相等的ArrayList   Java getDesktop()。open在Windows中工作,但在Mac中不工作   从tomcat切换到jetty后的java“无法启动嵌入式容器”,Spring引导   java如何使用void方法   java如何在解组时在JAXB的ValidationEventHandler中获取节点值?   如何使用Akka Java API创建不响应的TCP接收器   JavaScriptjQuery在java中将记录上传到数据库时的进度条   如何在重新绘制时在java小程序中显示上一个图像