深度学习:基于PyTorch的模型解释工具Captum

深度学习:基于PyTorch的模型解释工具Captum

  • 引言
  • 简介
  • 示例
    • 安装
    • 解释模型的预测
    • 解释文本模型
      • 情绪分析
      • 问答
    • 解释视觉模型
      • 特征分析
      • 特征消融
      • 鲁棒性
    • 解释多模态模型

引言

当我们训练神经网络模型时,我们通常只关注模型的整体性能,例如准确率或损失函数值。然而,理解模型为何做出特定预测,哪些输入特征对模型决策影响最大,对于构建可解释、可信赖和健壮的模型至关重要。为此,Facebook AI研究团队开发了captum库,这是一个开源项目,旨在帮助研究人员和开发人员更好地理解PyTorch模型的运行机制。

简介

Captum(拉丁文"comprehension"的词根,意为理解)是一个开源、可扩展的库,用于构建在 PyTorch 上的模型可解释性。Captum能够与任何PyTorch构建的模型相适配。它提供了多种解释算法,包括Integrated Gradients、Deep Lift、Feature Ablation等。这些算法可以针对单个输出或一组输出应用,并可在CPU或CUDA上运行。Captum还提供了一个交互式可视化工具,让用户能够轻松地观察和比较不同特征的影响。更多详细内容可见官网https://captum.ai/。

示例

以下展示了如何安装和使用captum:

安装

# conda 安装
conda install captum -c pytorch
# pip 安装
pip install captum

解释模型的预测

利用Integrated Gradients算法分析输入对于目标输出的贡献度,并打印出结果。

from captum.attr import IntegratedGradients# 假设model是我们用PyTorch构建和训练好的模型
# input是模型的输入数据
# target是我们想要解释的分类输出ig = IntegratedGradients(model)
attr, delta = ig.attribute(input, target=target, return_convergence_delta=True)
print('Integrated Gradients Attribution:', attr)
print('Convergence Delta:', delta)

解释文本模型

情绪分析

此示例加载预训练的CNN模型使用Integrated Gradients算法对IMDB数据集进行情绪分析。

在这里插入图片描述

问答

此示例使用 Captum 解释用于问答的 BERT 模型,使用 Hugging Face 的预训练模型,并在 SQUAD 数据集上进行了微调,并展示了如何使用 hooks 来检查和更好地理解嵌入和注意力层。
在这里插入图片描述
在这里插入图片描述
此示例使用attribution和Integrated Gradients算法分析注意力矩阵。此分析有助于我们识别不同tokens之间的强交互对,以进行特定模型预测。我们将我们的发现与向量norm进行比较,结果表明attribution分数比向量norm更有意义。
在这里插入图片描述

解释视觉模型

特征分析

此示例加载预训练的CNN模型使用Integrated Gradients和DeepLIFT算法对CIFAR数据集进行特征分析。
在这里插入图片描述

在这里插入图片描述在这里插入图片描述

特征消融

此示例利用分割掩码来定义输入特征的消融组,并展示了这种分析如何帮助理解输入的哪些部分影响模型中的特定目标。
在这里插入图片描述

鲁棒性

此示例将 FGSM 和 PGD 等鲁棒性攻击以及 MinParamPerturbation 和 AttackComparator 等鲁棒性指标应用于在 CIFAR 数据集上训练的模型。除此之外,它还演示了如何将鲁棒性技术与归因算法结合使用。
在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述

解释多模态模型

此示例针对开源视觉问答(VQA)模型,使用Integrated Gradients算法解释了几个测试问题的输出,并分析了模型文本和视觉部分的归因分数。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/775273.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Pillow教程06:将图片中出现的黄色和红色,改成绿色

---------------Pillow教程集合--------------- Python项目18:使用Pillow模块,随机生成4位数的图片验证码 Python教程93:初识Pillow模块(创建Image对象查看属性图片的保存与缩放) Pillow教程02:图片的裁…

浅析扩散模型与图像生成【应用篇】(十三)——GLIDE

13. GLIDE: Towards Photorealistic Image Generation and Editing with Text-Guided Diffusion Models 该文提出一种基于文本引导的扩散模型用于图像的生成和编辑,可以根据给定的文字描述来生成或编辑图像。在ADM中我们曾介绍了一种基于分类器引导的图像生成模型&a…

鸿蒙HarmonyOS应用开发之使用Node-API实现跨语言交互开发流程

使用Node-API实现跨语言交互,首先需要按照Node-API的机制实现模块的注册和加载等相关动作。 ArkTS/JS侧:实现C方法的调用。代码比较简单,import一个对应的so库后,即可调用C方法。 Native侧:.cpp文件,实现模…

gin基础学习笔记--Log

1. 日志文件 package mainimport ("io""os""github.com/gin-gonic/gin" )func main() {gin.DisableConsoleColor()// logging to a filef, _ : os.Create("gin.log")gin.DefaultWriter io.MultiWriter(f)// 如果需要同时将日志写入文…

【快捷部署】008_Docker(25.0.5)

📣【快捷部署系列】008期信息 编号选型版本操作系统部署形式部署模式复检时间008Docker25.0.5Ubuntu 20.04apt-2024-03-27 一、快捷部署 #!/bin/bash ################################################################################# # 作者:cxyt…

机器人是怎么计时的(通用定时器 - 时基单元)

目录 一,引言 二,机器人的“大脑” 三,时基单元介绍 1,定时器框图 2,时基单元 (1)预分频器 (2)CNT计数器 (3)自动重装载寄存器 四&#…

如何在jupyter使用新建的虚拟环境以及改变jupyter启动文件路径。

对于刚刚使用jupyter的新手来说,经常不知道如何在其中使用新建的虚拟环境内核,同时,对于默认安装的jupyter,使用jupyter notebook命令启动 jupyter 以后往往默认是C盘的启动路径,如下图所示,这篇教程将告诉…

深入在线文档系统的 MarkDown/Word/PDF 导出能力设计

深入在线文档系统的 MarkDown/Word/PDF 导出能力设计 当我们实现在线文档的系统时,通常需要考虑到文档的导出能力,特别是对于私有化部署的复杂ToB产品来说,文档的私有化版本交付能力就显得非常重要,此外成熟的在线文档系统还有很…

中伟视界:智能识别!电动车戴头盔系统,保障您的安全出行

电动车AI头盔识别系统是一种利用人工智能技术提高道路安全的创新应用。该系统的核心目的是确保电动车驾驶者遵守交通安全规则,特别是佩戴头盔这一基本安全措施。通过自动识别驾驶者是否佩戴头盔,这一系统能够鼓励更为安全的骑行行为,减少交通…

Android客户端自动化UI自动化airtest从0到1搭建macos+demo演示

iOS客户端自动化UI自动化airtest从0到1搭建macosdemo演示-CSDN博客 一、基础环境 1. 安装jdk 选择jdk8 如果下载高版本 可能不匹配会失败 下载.dmg文件 苹果电脑 | macOS | jdk1.8 | 环境变量配置_jdk1.8 mac-CSDN博客 Java Downloads …

【LeetCode热题100】105. 从前序与中序遍历序列构造二叉树(二叉树)

一.题目要求 给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。 二.题目难度 中等 三.输入样例 示例 1: 输入: preorder [3,9,20,15,7], inorder…

【前端】layui学习笔记

参考视频:LayUI 1.介绍 官网:http://layui.apixx.net/index.html 国人16年开发的框架,拿来即用,门槛低 … 2. LayUi的安装及使用 Layui 是一套开源的 Web UI 组件库,采用自身轻量级模块化规范,遵循原生态的 HTML/CSS/JavaScript…

Docker Compose环境的安装通过docker compose完成python程序的运行

目录 Docker Compose环境的安装 通过docker compose完成python程序的运行 Docker Compose环境的安装 ##### 方法一:直接下载编译好的二进制文件 注意:只有linux平台上在安装docker时没有安装docker-compose,windows、macos安装docker时自…

C# wpf 嵌入wpf控件

WPF Hwnd窗口互操作系列 第一章 嵌入Hwnd窗口 第二章 嵌入WinForm控件 第三章 嵌入WPF控件(本章) 文章目录 WPF Hwnd窗口互操作系列前言一、如何实现?1、继承HwndHost2、添加Content属性3、创建wpf窗口并设置Content4、关闭wpf窗口 二、完整…

Android卡顿掉帧问题分析之实战篇

本文将结合典型实战案例,分析常见的造成卡顿等性能问题的原因。从系统工程师的总体角度来看 ,造成卡顿等性能问题的原因总体上大致分为三个大类:一类是流程执行异常;二是系统负载异常;三是编译问题引起。 1 流程执行异…

边缘计算迎来“量子飞跃”!支持抗量子密码,AMD推出FPGA新系列

3月6日,AMD宣布推出AMD Spartan™ UltraScale™ FPGA系列,这是AMD成本优化FPGA和自适应SoC广泛产品组合的最新成员。 距离1月22日,AMD推出业界首款符合VESA DisplayPort 2.1标准的FPGA和自适应SoC实现,也才过了一个多月的时间。 S…

【深度学习基础(4)】pytorch 里的log_softmax, nll_loss, cross_entropy的关系

一、常用的函数有: log_softmax,nll_loss, cross_entropy 1.log_softmax log_softmax就是log和softmax合并在一起执行,log_softmaxlogsoftmax 2. nll_loss nll_loss函数全称是negative log likelihood loss, 函数表达式为:f(x,class)−x[…

【opencv】教程代码 —ImgProc (5)提取图像中水平线和垂直线的opencv示例

5. Morphology_3.cpp 提取图像中水平线和垂直线的opencv示例 原图notes.png 灰度化 二值化 提取水平线 提取垂直线 对垂直图像取反 提取边缘 使用膨胀操作处理边缘 平滑处理:vertical.copyTo(smooth); blur(smooth, smooth, Size(2, 2)); smooth.copyTo(vertical, e…

【spring】@Component注解学习

Component介绍 Component 是 Spring 框架中的一个注解,用于将一个类标记为 Spring 上下文中的一个组件。当一个类被标记为 Component 时,Spring 容器会在启动时自动扫描并实例化这个类,并将其注册到 Spring 上下文中。 Component 注解可以用…

通过Appium和Xcode Accessibility Inspector获取iOS应用元素定位的方法

在 iOS 移动应用程序上使用选择器查找元素定位是我们在移动端 UI 自动化测试的先决条件。 但是,由于应用程序内容在原生 iOS 应用程序中的呈现方式,我们可以用来定位应用程序元素的选择器与 Web 浏览器元素有很大不同。 在本文中,我们将了解 …