TorchLens--可视化任何PyTorch模型

2023-09-21 15:49:31

0. 简介

PyTorch是一个深度学习框架,它使用张量(tensor)作为核心数据结构。在可视化PyTorch模型时,了解每个张量运算的意义非常重要。张量运算作为神经网络模型中的基本操作。它们用于处理输入数据、执行权重更新和生成预测结果。同时张量运算还用于计算损失函数。损失函数衡量了模型预测与真实标签之间的差异。通过使用张量运算,可以计算出模型的预测结果与真实标签之间的差异,并将其最小化。所以一款能够可视化任何PyTorch模型的张量显示开源项目非常重要。这里是该项目的Github地址。

1. 了解TorchLens

TorchLens是一个用于完成两个任务的软件包:

  1. 轻松地从PyTorch模型的每个中间操作中提取激活值,无需进行任何修改,只需一行代码即可。这里的“每个操作”指的是每个操作;“一行代码”指的是一行代码。
  2. 通过直观的自动可视化和关于网络计算图的详细元数据(部分列表在此处)来理解模型的计算结构。
    下面是一个非常简单的循环模型的示例;正如您所看到的,您只需像正常定义模型一样将其传入,TorchLens将返回完整的前向传递日志以及可视化结果:
class SimpleRecurrent(nn.Module):
    def __init__(self):
        super().__init__()
        self.fc = nn.Linear(in_features=5, out_features=5)

    def forward(self, x):
        for r in range(4):
            x = self.fc(x)
            x = x + 1
            x = x * 2
        return x


simple_recurrent = SimpleRecurrent()
model_history = tl.log_forward_pass(simple_recurrent, x,
                                    layers_to_save='all',
                                    vis_opt='rolled')
print(model_history['linear_1_1:2'].tensor_contents)  # second pass of first linear layer

'''
tensor([[-0.0690, -1.3957, -0.3231, -0.1980,  0.7197],
        [-0.1083, -1.5051, -0.2570, -0.2024,  0.8248],
        [ 0.1031, -1.4315, -0.5999, -0.4017,  0.7580],
        [-0.0396, -1.3813, -0.3523, -0.2008,  0.6654],
        [ 0.0980, -1.4073, -0.5934, -0.3866,  0.7371],
        [-0.1106, -1.2909, -0.3393, -0.2439,  0.7345]])
'''

在这里插入图片描述
这是一个非常复杂的变压器模型(swin_v2_b),其前向传递过程中涉及了1932个操作;我们也可以获取每个操作的保存输出。

在这里插入图片描述

2. 安装TorchLens

要安装TorchLens,请先安装graphviz(用于生成网络可视化),然后使用pip安装TorchLens:

sudo apt install graphviz
pip install torchlens

TorchLens与PyTorch的1.8.0及以上版本兼容

3. 如何使用TorchLens

TorchLens的主要功能是log_forward_pass:当在模型和输入上调用时,它会在模型上运行前向传递,并返回一个包含中间层激活和相关元数据的ModelHistory对象,同时还提供了在前向传递过程中发生的每个操作的可视化表示:

…详情请参照古月居

更多推荐

武汉凯迪正大—继电保护测试仪

一、凯迪正大微机继电保护测试仪产品概述KDJB系列微机继电保护校验仪是在参照电力部颁发的《微机型继电保护试验装置技术条件(讨论稿)》的基础上,听取用户意见,总结目前国内同类产品优缺点,充分使用现代的微电子技术和器件实现的一种小型化微机继电保护测试仪。它采用单机独立运行,亦可联接笔记本电脑运行。主机内置新一代高速数字信号

【zookeeper】基于Linux环境安装zookeeper集群

前提,需要有几台linux机器,我们可以准备好诸如finalshell来连接linux并且上传文件;其次Linux需要安装上ssh,并且在/etc/hosts文件中写好其他几台机器的名字和Ip127.0.0.1localhostlocalhost.localdomainlocalhost4localhost4.loca

ChatGLM 大模型外挂(向量)知识库

前言如果我们想往大模型里边注入知识,最先能想到的就是对大模型进行微调。笔者曾实验过,只用几十万量级的数据对大模型进行微调并不能很好的将额外知识注入大模型,笔者在算力这方面囊中羞涩,只有4块卡,这几十万量级的数据训练6B的模型都要训练好几天。。。如果不微调的话,其实还是可以利用外挂数据库的方式让大模型利用额外的知识的,比

Python案例|使用卷积网络对星系图片进行分类

星系动物园(galaxyzoo)是由牛津大学等研究机构组织并邀请公众协助的志愿者科学计划,目的是为超过100万个星系图像进行分类。这是天文学中一次规模浩大的公众星空普查活动,大众参与热情高涨,在近十万名志愿者的积极参与下,只用了175天就完成了第一阶段的星系动物园项目:对95万个星系进行了分类,而且平均每个星系被分类了

Haproxy集群调度器与部署

一、Haproxy介绍:1.Haproxy应用分析:LVS在企业中康复在能力很强,但存在不足:LVS不支持正则处理,不能实现动静分离对于大型网站LVS的事实配置较为复杂,维护成本相对较Haproxy是一款可以供高可用性、负载均衡和基于TCP和HTTP应用的代理软件非常适用于并发大(并发达1w以上)web站点,可保持站点

高阶数据结构(2)-----红黑树(未完成)

一)红黑树的基本概念和基本性质:1)红黑树就是一种高度平衡的二叉搜索树,但是在每一个节点上面都增加了一个存储位来表示结点的颜色,可以是红色或者是黑色,通过对任何一条从根节点到叶子节点上面的路径各个节点着色方式的限制,红黑树会自动确保没有一条路经会比其他路径的长度高出两倍,而是接近平衡的2)红黑树最长路径是最短路径的两倍

vue3 effect.spec

🎬岸边的风:个人主页🔥个人专栏:《VUE》《javaScript》⛺️生活的理想,就是为了理想的生活!目录原型观察的对象的变更会同步到原始对象重复观察相同的原始对象直接返回相同的proxy对象不会污染原始对象通过toRawapi可以返回被观察对象的原始对象shallowReactive结语定义一个对象origina

JavaScript的三大组成部分是什么?JavaScript的核心组成部分解析:语法、BOM和DOM

🌷🍁博主猫头虎带您GotoNewWorld.✨🍁🦄博客首页——猫头虎的博客🎐🐳《面试题大全专栏》文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺🌊《IDEA开发秘籍专栏》学会IDEA常用操作,工作效率翻倍~💐🌊《100天精通Golang(基础入门篇)》学会Golang语言,畅玩云原生,走遍大

Nex.js Web 应用程序 SSG 与 SSR——选择正确的渲染方法

Next.js,一个流行的React框架,改变了开发人员构建现代Web应用程序的方式。它提供了强大的功能,例如服务器端渲染(SSR)和静态站点生成(SSG),可优化应用程序的性能和用户体验。在这篇博文中,我们将探讨SSG和SSR之间的主要区别、它们的优势、何时选择其中一种方法,以及如何使用AWSAmplify部署这两种

基于ASCON的AEAD

1.引言前序博客:ASCON:以“慢而稳”赢得NIST轻量级加密算法标准密码学中的AEAD(authenticatedencryptionwithassociateddata)对称密钥加密过去数年来已发生改变,具体为:当今主要使用streamciphers,因其比blockciphers要快得多。经常会使用AEAD(A

Python | 为FastAPI后端服务添加API Key认证(分别基于路径传参和header两种方式且swagger文档友好支持)

文章目录01前言02路径传参方式添加APIKey2.1完整代码2.2请求示例2.3swagger文档测试03请求头Header方式传入APIKey(推荐)3.1完整代码3.2请求示例3.3swagger文档测试01前言FastAPI,如其名所示,是一个极为高效的框架,特别适用于构建API后端服务。而在与其他网站的API

热文推荐