PyTorch详解-可视化模块
PyTorch详解-可视化模块
- Tensorboard 基础与使用
- 启动 TensorBoard
- 访问 TensorBoard
- 使用 TensorBoard
- SummaryWriter类介绍
- 参数说明
- 常用方法
- CNN卷积核与特征图可视化
- 参数说明
- 返回值
- 混淆矩阵与训练曲线可视化
- 混淆矩阵可视化
- 训练曲线绘制
- 模型参数打印
- 参数说明
- 输出解释
Tensorboard 基础与使用
TensorBoard 是一个非常流行的工具,用于可视化 TensorFlow 和 PyTorch 等深度学习框架的训练过程。它可以用来监控训练过程中的各种指标,如损失函数、准确率等,并且可以直观地展示模型结构、权重分布等信息。
启动 TensorBoard
启动 TensorBoard 需要在命令行中指定日志文件所在的目录。
tensorboard --logdir=./logs
如果系统找不到 tensorboard 命令,可能需要使用绝对路径调用它:
python -m tensorboard.main --logdir=./logs
访问 TensorBoard
启动后,TensorBoard 会默认在本地服务器的端口 6006 上运行。可以通过浏览器访问 http://localhost:6006 来查看 TensorBoard 的界面。
使用 TensorBoard
TensorBoard 提供了多个不同的面板来展示不同的信息:
Scalars:显示标量值的变化,如损失函数或准确率。
Graphs:显示计算图,包括操作节点和张量流。
Images:显示图像数据,可用于查看输入图像或中间层的激活。
Histograms:显示权重、偏置或其他变量的直方图。
Distributions and Profiles:显示分布信息和性能分析。
Embeddings:显示高维数据的嵌入表示。
Pruning:显示模型剪枝的信息。
Hyperparameter Tuning:显示超参数搜索的结果。
Projector:用于探索高维数据的可视化工具。
SummaryWriter类介绍
SummaryWriter 类位于 torch.utils.tensorboard 模块中,用于记录训练过程中的各种数据,如标量、图像、直方图等,并将这些数据写入磁盘,以便 TensorBoard 可视化工具加载和显示。
CLASS torch.utils.tensorboard.writer.SummaryWriter(log_dir=None, comment='', purge_step=None, max_queue=10, flush_secs=120, filename_suffix='')
参数说明
log_dir (str, optional):
- 日志文件的保存位置,默认为 ‘runs/experiment_name’。
- 如果省略,则默认在当前工作目录下的 runs 文件夹中创建一个新的子文件夹。
- 示例:‘runs/my_experiment’。
comment (str, optional):
-
添加到日志文件夹名称后的评论字符串。
-
默认为空字符串 ‘’。
purge_step (int, optional): -
删除旧的事件文件的步骤数。
-
如果为 None,则不会删除任何文件。
-
如果为整数,则在达到此步骤数后,将删除旧的事件文件。
max_queue (int, optional): -
待写入的日志事件的最大队列大小,默认为 10。
-
较大的队列可以减少写入磁盘的频率,从而提高性能。
flush_secs (int, optional): -
写入事件到磁盘的间隔时间(秒),默认为 120 秒。
-
较短的时间间隔可以更快地看到更新,但可能会增加 I/O 开销。
filename_suffix (str, optional): -
附加到事件文件名末尾的后缀,默认为空字符串 ‘’。
-
可以用于区分不同的日志文件。
常用方法
add_scalar(tag, scalar_value, global_step=None, walltime=None)
- tag:字符串形式的标签,用于区分不同类型的标量数据。
- scalar_value:要记录的标量值。
- global_step:全局步骤数,用于绘制随时间变化的趋势图。
- walltime:可选的时间戳,用于精确控制数据点的时间。
- 功能:添加标量;tag的设置可以有个技巧是在同一栏下绘制多个图,如’Loss/train’, ‘Loss/Valid’, 这就类似于matplotlib的subplot(121), subplot(122)
add_scalars(main_tag, tag_scalar_dict, global_step=None, walltime=None)
- 功能:在一个坐标轴中绘制多条曲线。常用于曲线对比。
add_image(tag, img_tensor, global_step=None, dataformats=‘CHW’)
- tag:字符串形式的标签,用于区分不同类型的图像数据。
- img_tensor:图像数据,通常为 torch.Tensor 类型。
- global_step:全局步骤数。
- dataformats:图像数据的维度顺序,默认为 ‘CHW’(通道、高度、宽度)。
- 功能:绘制图像。
add_images(tag, img_tensor, global_step=None, walltime=None, dataformats=‘NCHW’)
- 功能:绘制图像序列,常用于数据清洗,卷积核,特征图的可视化。
add_figure(tag, figure, global_step=None, close=True, walltime=None)
- 功能:将matplotlib的figure绘制到tensorboard中。
add_histogram(tag, values, global_step=None, bins=‘tensorflow’)
- tag:字符串形式的标签,用于区分不同类型的直方图数据。
- values:要记录的数据值。
- global_step:全局步骤数。
- bins:直方图的分箱方式,默认为 ‘tensorflow’。
- 功能:绘制直方图。这里的global_step表明会得到多个直方图。在tensorboard界面,需要进入HISTOGRAM中才能看到直方图可视化。
add_graph(model, input_to_model=None, verbose=False)
- model:要记录的模型。
- input_to_model:模型的输入数据。
- verbose:是否输出详细的日志信息。
- 功能:绘制pytorch模型拓扑结构图。
add_embedding(mat, metadata=None, label_img=None, global_step=None, tag=‘default’)
- mat:嵌入矩阵。
- metadata:元数据,如类别标签。
- label_img:用于标记的图像数据。
- global_step:全局步骤数。
- tag:字符串形式的标签。
- 功能:绘制高维数据在低维的投影
close()
- 关闭 SummaryWriter 实例,释放资源。
add_video:绘制视频add_audio:绘制音频,可进行音频播放。add_text:绘制文本add_pr_curve:绘制PR曲线,二分类任务中很实用。add_mesh:绘制网格、3D点云图。add_hparams:记录超参数组,可用于记录本次曲线所对应的超参数。
CNN卷积核与特征图可视化
torchvision.utils.make_grid 是一个用于将多个图像排列成一个网格图像的函数。这个函数在 PyTorch 中非常有用,特别是在需要可视化一批图像的时候,比如在训练神经网络的过程中查看输入图像或中间层的特征图。
torchvision.utils.make_grid(tensor, nrow=8, padding=2, normalize=False, range=None, scale_each=False, pad_value=0, **kwargs)
参数说明
tensor (Tensor or list of tensors):
输入的图像张量或张量列表。如果输入是张量,则形状应为 (batch_size, channels, height, width) 或 (channels, height, width)。
nrow (int, optional):
每行中图像的数量,默认为 8。
padding (int, optional):
图像之间的填充像素数量,默认为 2。
normalize (bool, optional):
是否对图像进行归一化处理,默认为 False。
range (tuple, optional):
归一化的范围,如果 normalize=True,则使用此参数指定归一化的最小值和最大值。
scale_each (bool, optional):
是否单独对每个图像进行归一化处理,默认为 False。
pad_value (float, optional):
填充像素的值,默认为 0。
**kwargs (dict, optional):
其他可选参数,例如 dtype 等。
返回值
Tensor:
返回一个排列后的网格图像张量,形状为 (channels, grid_height, grid_width)。
混淆矩阵与训练曲线可视化
混淆矩阵可视化
show_conf_mat(confusion_mat, classes, set_name, out_dir, epoch=999, verbose=False, perc=False)
"""
混淆矩阵绘制并保存图片
:param confusion_mat: nd.array
:param classes: list or tuple, 类别名称
:param set_name: str, 数据集名称 train or valid or test?
:param out_dir: str, 图片要保存的文件夹
:param epoch: int, 第几个epoch
:param verbose: bool, 是否打印精度信息
:param perc: bool, 是否采用百分比,图像分割时用,因分类数目过大
:return:
"""
训练曲线绘制
loss曲线是需要将训练与验证放在一起看的,单独看一条曲线是不够的。通过训练loss看偏差,通过训练loss与验证loss看方差。偏差看的是模型拟合能力是否足够,方差是看模型泛化性能是否足够,是否存在过拟合。
模型参数打印
torchinfo 是一个用于分析 PyTorch 模型结构和计算复杂度的库。它可以方便地展示模型的每一层的信息,包括输入输出形状、参数数量等,对于理解模型架构和优化模型非常有帮助。
参数说明
model (nn.Module):
- 需要分析的 PyTorch 模型实例。
input_size (tuple):
- 输入数据的形状。例如 (batch_size, channels, height, width)。
输出解释
torchinfo.summary 会输出模型每一层的信息,包括:
- Layer name (层名):模型中的层名。
- Output Shape (输出形状):该层输出的形状。
- Param # (参数数量):该层的参数数量。
- Total params (总参数数量):模型的总参数数量。
- Trainable params (可训练参数数量):模型中可训练的参数数量。
- Non-trainable params (不可训练参数数量):模型中不可训练的参数数量。
参考:https://tingsongyu.github.io/PyTorch-Tutorial-2nd/chapter-6/
参考:https://pytorch-cn.readthedocs.io/zh/latest/
参考:https://datawhalechina.github.io/thorough-pytorch/
相关文章:
PyTorch详解-可视化模块
PyTorch详解-可视化模块 Tensorboard 基础与使用启动 TensorBoard访问 TensorBoard使用 TensorBoardSummaryWriter类介绍参数说明常用方法 CNN卷积核与特征图可视化参数说明返回值 混淆矩阵与训练曲线可视化混淆矩阵可视化训练曲线绘制 模型参数打印参数说明输出解释 Tensorboa…...
Bootstrap 警告信息(Alerts)使用介绍
本章将讲解警告(Alerts)以及 Bootstrap 所提供的用于警告的 class。警告(Alerts)向用户提供了一种定义消息样式的方式。它们为典型的用户操作提供了上下文信息反馈。 您可以为警告框添加一个可选的关闭按钮。为了创建一个内联的可…...
uniapp(H5)设置反向代理,设置成功后页面报错
设置反向代理后,页面报错图: 反向代理代码:devServer下面就是配置对应的代理,一般这样就没问题了 "h5": {"router": {"mode": "hash"},"devServer": {"port": 517…...
define、typedef和using的使用
define、typedef 和 using 是 C(以及 C 语言中的 define)中用于定义别名或简化复杂类型的三个关键字,但它们各自有着不同的用途和行为。下面将分别对比这三个关键字: 1. #define 定义方式:#define 是预处理指令&…...
vue element时间选择不能超过今天 时间选中长度不能超过7天
背景: 使用elenmet plus 组件实现时间选择;且日期时间选择不能超过今天;连续选中时间的长度范围不能超过7天 效果展示: 实现思路: 一、使用element组件自带的属性和方法; :disabled-date"disabledDate…...
如何 吧一个 一维数组 切分成相同等分,一维数组作为lstm的输入(三维数据)的数据预处理 collate_fn的应用
要将一个一维数组切分成相同等分,你可以使用 Python 的内置功能或者 NumPy 库(如果你处理的是数值数据)。以下是几种不同的方法: 方法3 pad_sequence 结合dataloader 应该是最佳方案 ### 方法 1: 使用 Python 的内置切片功能 如果…...
Remix 学习 - @remix-run/react 中主要的 hooks
在 remix-run/react 中,有几个常用的 hooks,它们帮助你在 Remix 应用中处理路由、数据加载和其他功能。以下是一些主要的 hooks: useLoaderData: 用于获取从 loader 函数中返回的数据。 通常在组件中调用,以便访问路由加载的数据…...
STL之stack
stack容器 - 先进后出” - stack是堆栈容器,是一种的容器。 - 头文件:#include <stack> stack的push()与pop()方法 stack.push(elem);//往栈头添加元素 stack.pop();//从栈头移除第一个元素 stack<int> stkInt; stkInt.push(1);stkInt…...
如何用3个月零基础入门网络安全?_网络安全零基础怎么学习
前 言 写这篇教程的初衷是很多朋友都想了解如何入门/转行网络安全,实现自己的“黑客梦”。文章的宗旨是: 1.指出一些自学的误区 2.提供客观可行的学习表 3.推荐我认为适合小白学习的资源.大佬绕道哈! →点击获取网络安全资料攻略← 一、自学…...
适合学生党开学买的蓝牙耳机?分享开放式耳机排行榜前十名
学生党开学想买耳机的话,我觉得比较适合入手开放式耳机,因为这类耳机佩戴舒适度高,长时间使用也不会感到不适或疲劳,同时保持耳道干爽透气,更加健康卫生,还能提供自然、开阔的音场,音质表现优秀…...
汽车租赁系统1.0版本
汽车租赁系统1.0版本比较简陋,以后还会有2.0、3.0……就像《我爱发明》里面的一代机器二代机器,三代机器一样,是一个迭代更新的过程(最近比较忙,可能会很久),这个1.0版本很简陋,也请…...
DockerDocker Compose安装(离线+在线)
Docker&Docker Compose安装(离线在线) Docker离线安装 下载想要安装的docker软件版本:https://download.docker.com/linux/static/stable/x86_64/ 如目标机无法从链接下载,可以在本机下载后 scp docker版本压缩包[如docker-20.10.9.tgz] usernameh…...
【泰克生物】酵母展示建库技术解析:构建高质量抗体文库的实用指南
酵母展示库是抗体酵母展示服务的核心组成部分。酵母展示技术利用酵母细胞表面的展示系统,将目标蛋白质(如抗体)展示在细胞膜上。这一过程首先涉及到将抗体基因克隆到酵母表达载体中。随后,表达载体被转化到酵母细胞中,…...
QT Mode/View之View
目录 概念 使用已存在的视图 使用模型 使用模型的多个视图 处理元素的选择 视图间共享选择 概念 在模型/视图架构中,视图从模型中获取数据项并将它们呈现给用户。数据的表示方式不必与模型提供的数据表示形式相似,而且可能与用于存储数据项的底层数…...
URP 线性空间 ui资源制作规范
前言: 关于颜色空间的介绍,可参阅 unity 文档 Color space URP实现了基于物理的渲染,为了保证光照计算的准确,需要使用线性空间; 使用线性空间会带来一个问题,ui资源在unity中进行透明度混合时ÿ…...
如何精确统计Pytorch模型推理时间
文章目录 0 背景1 精确统计方法2 手动synchronize和Event适用场景 0 背景 在分析模型性能时需要精确地统计出模型的推理时间,但仅仅通过在模型推理前后打时间戳然后相减得到的时间其实是Host侧向Device侧下发指令的时间。如下图所示,Host侧下发指令与De…...
Mybatis-plus-Generator 3.5.5 自定义模板支持 (DTO/VO 等) 配置
随着项目节奏越来越快,为了减少把时间浪费在新建DTO 、VO 等地方,直接直接基于Mybatis-plus 这颗大树稍微扩展一下,在原来生成PO、 DAO、Service、ServiceImpl、Controller 基础新增。为了解决这个问题,网上找了一堆资料ÿ…...
C#环境下MAC地址获取方法解析
在C#中,获取MAC地址并不是直接支持的,因为出于安全和隐私的考虑,操作系统通常会限制对这类硬件信息的直接访问。不过,仍然可以通过一些方法间接地获取到本地网络接口(比如以太网接口)的MAC地址。 以下是几…...
(k8s)Kubernetes 从0到1容器编排之旅
一、引言 在当今数字化的浪潮中,Kubernetes 如同一艘强大的航船,引领着容器化应用的部署与管理。它以其卓越的灵活性、可扩展性和可靠性,成为众多企业和开发者的首选。然而,要真正发挥 Kubernetes 的强大威力,仅仅掌握…...
Rust Web开发框架对比:Warp与Actix-web
文章目录 Rust Web开发框架对比:Warp与Actix-web引言框架概述Warp框架简介Actix-web框架简介 设计理念Warp的设计理念Actix-web的设计理念 性能比较可扩展性和生态插件和中间件支持社区和文档 使用示例使用Warp构建简单的HTTP服务使用Actix-web构建简单的HTTP服务 学…...
.Net框架,除了EF还有很多很多......
文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...
基于当前项目通过npm包形式暴露公共组件
1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹,并新增内容 3.创建package文件夹...
华为OD机试-食堂供餐-二分法
import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...
spring:实例工厂方法获取bean
spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂ÿ…...
Python爬虫(一):爬虫伪装
一、网站防爬机制概述 在当今互联网环境中,具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类: 身份验证机制:直接将未经授权的爬虫阻挡在外反爬技术体系:通过各种技术手段增加爬虫获取数据的难度…...
k8s业务程序联调工具-KtConnect
概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…...
【HTTP三个基础问题】
面试官您好!HTTP是超文本传输协议,是互联网上客户端和服务器之间传输超文本数据(比如文字、图片、音频、视频等)的核心协议,当前互联网应用最广泛的版本是HTTP1.1,它基于经典的C/S模型,也就是客…...
VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP
编辑-虚拟网络编辑器-更改设置 选择桥接模式,然后找到相应的网卡(可以查看自己本机的网络连接) windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置,选择刚才配置的桥接模式 静态ip设置: 我用的ubuntu24桌…...
Mysql8 忘记密码重置,以及问题解决
1.使用免密登录 找到配置MySQL文件,我的文件路径是/etc/mysql/my.cnf,有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...
在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)
考察一般的三次多项式,以r为参数: p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]; 此多项式的根为: 尽管看起来这个多项式是特殊的,其实一般的三次多项式都是可以通过线性变换化为这个形式…...
