用deepseek学大模型04-模型可视化与数据可视化
deepseek.com: pytorch可视化工具 生成神经网络图
在 PyTorch 中,可视化神经网络结构的常用工具和方法有以下几种,以下将详细介绍它们的用法:
1. TensorBoard (PyTorch 官方集成)
PyTorch 通过 torch.utils.tensorboard 支持 TensorBoard,可以直接可视化模型结构。
步骤:
-
安装 TensorBoard:
pip install tensorboard -
代码示例:
import torch from torch.utils.tensorboard import SummaryWriter from torchvision.models import resnet18# 定义模型 model = resnet18() # 创建 SummaryWriter 对象 writer = SummaryWriter("runs/experiment1") # 生成随机输入数据(需与模型输入形状匹配) dummy_input = torch.randn(1, 3, 224, 224) # 将模型结构写入 TensorBoard writer.add_graph(model, dummy_input) writer.close() -
启动 TensorBoard:
tensorboard --logdir=runs在浏览器中打开
http://localhost:6006,在 GRAPHS 标签页查看模型结构。
2. torchviz (生成计算图)
torchviz 基于 Graphviz,生成模型的计算图(前向传播路径)。
步骤:
-
安装依赖:
pip install torchviz graphviz -
代码示例:
import torch from torchviz import make_dot from torchvision.models import resnet18model = resnet18() dummy_input = torch.randn(1, 3, 224, 224) output = model(dummy_input) # 生成计算图 dot = make_dot(output, params=dict(model.named_parameters())) # 保存为图片(格式可为 PDF 或 PNG) dot.render("resnet18", format="png")
3. HiddenLayer (轻量级可视化)
hiddenlayer 是一个轻量级工具,适合快速生成模型结构图。
步骤:
-
安装:
pip install hiddenlayer -
代码示例:
import torch import hiddenlayer as hl from torchvision.models import resnet18model = resnet18() dummy_input = torch.randn(1, 3, 224, 224) # 构建可视化图表 hl.build_graph(model, dummy_input).save("resnet18.png")
4. Netron (模型结构查看器)
Netron 是一个独立的可视化工具,支持 PyTorch 模型文件(.pt 或 .pth)或 ONNX 格式。
步骤:
-
导出模型为 ONNX:
import torch from torchvision.models import resnet18model = resnet18() dummy_input = torch.randn(1, 3, 224, 224) torch.onnx.export(model, dummy_input, "resnet18.onnx") -
使用 Netron 打开:
访问 Netron Web 版 或下载桌面端,上传.onnx文件即可查看交互式模型结构。
5. PyTorch 内置打印
通过 print(model) 快速查看模型层级(适合简单结构):
import torch.nn as nnclass MyModel(nn.Module):def __init__(self):super().__init__()self.layers = nn.Sequential(nn.Linear(10, 20),nn.ReLU(),nn.Linear(20, 1))def forward(self, x):return self.layers(x)model = MyModel()
print(model)
工具对比
| 工具 | 优点 | 缺点 |
|---|---|---|
| TensorBoard | 集成训练监控,交互式可视化 | 需要启动服务,略复杂 |
| torchviz | 显示计算细节,适合调试 | 依赖 Graphviz,图可能较复杂 |
| HiddenLayer | 轻量级,快速生成 | 功能相对简单 |
| Netron | 无需代码,支持多格式 | 依赖导出模型文件 |
根据需求选择工具:调试计算流程用 torchviz,训练集成用 TensorBoard,快速分享用 Netron。
在 PyTorch 中,可视化训练集、测试集、预测结果和训练过程可以通过多种工具实现。以下是常用的工具和方法,按场景分类:
1. 可视化数据集(训练集/测试集)
工具:Matplotlib/Seaborn
直接使用 Python 绘图库可视化输入数据或特征分布。
import matplotlib.pyplot as plt
import torchvision# 示例:可视化 CIFAR10 训练集
dataset = torchvision.datasets.CIFAR10(root='./data', train=True, download=True)
classes = ('plane', 'car', 'bird', 'cat', 'deer', 'dog', 'frog', 'horse', 'ship', 'truck')# 显示前 9 张图片
fig, axes = plt.subplots(3, 3, figsize=(10, 10))
for i, ax in enumerate(axes.flat):img, label = dataset[i]ax.imshow(img)ax.set_title(f"Label: {classes[label]}")ax.axis('off')
plt.show()
2. 可视化训练过程
工具 1:TensorBoard(PyTorch 集成)
监控训练损失、准确率等指标,支持动态更新。
from torch.utils.tensorboard import SummaryWriterwriter = SummaryWriter("runs/experiment1")for epoch in range(num_epochs):# 训练代码...train_loss = ...val_accuracy = ...# 记录标量数据writer.add_scalar('Loss/train', train_loss, epoch)writer.add_scalar('Accuracy/val', val_accuracy, epoch)# 记录模型权重分布for name, param in model.named_parameters():writer.add_histogram(name, param, epoch)# 启动 TensorBoard
# tensorboard --logdir=runs
工具 2:Weights & Biases(第三方协作工具)
云端记录实验,支持超参数跟踪和团队协作。
import wandb# 初始化
wandb.init(project="my-project")# 记录指标
wandb.log({"train_loss": train_loss, "val_acc": val_accuracy})# 记录预测结果(图像示例)
wandb.log({"predictions": [wandb.Image(img, caption=f"Pred:{pred}, True:{true}")]})
3. 可视化预测结果
方法 1:Matplotlib 直接绘制
# 示例:分类结果可视化
import numpy as npmodel.eval()
with torch.no_grad():inputs, labels = next(iter(test_loader))outputs = model(inputs)preds = torch.argmax(outputs, dim=1)# 显示预测结果
fig, axes = plt.subplots(4, 4, figsize=(12, 12))
for i, ax in enumerate(axes.flat):ax.imshow(inputs[i].permute(1, 2, 0)) # 调整通道顺序ax.set_title(f"Pred: {classes[preds[i]]}\nTrue: {classes[labels[i]]}")ax.axis('off')
plt.tight_layout()
plt.show()
方法 2:混淆矩阵(分类任务)
from sklearn.metrics import confusion_matrix
import seaborn as sns# 计算混淆矩阵
cm = confusion_matrix(true_labels, pred_labels)
plt.figure(figsize=(10, 8))
sns.heatmap(cm, annot=True, fmt="d", cmap="Blues", xticklabels=classes, yticklabels=classes)
plt.xlabel("Predicted")
plt.ylabel("True")
plt.show()
4. 高级可视化工具
工具 1:Plotly(交互式可视化)
绘制动态训练曲线:
import plotly.express as px# 假设 logs 是包含训练历史的字典
fig = px.line(logs, x='epoch', y=['train_loss', 'val_loss'], title="Training and Validation Loss")
fig.show()
工具 2:Gradio(快速构建交互式 Demo)
部署模型预测交互界面:
import gradio as grdef classify_image(img):img = preprocess(img) # 预处理pred = model(img) # 推理return classes[torch.argmax(pred)]gr.Interface(fn=classify_image, inputs="image", outputs="label").launch()
5. 训练过程可视化(高级)
工具:PyTorch Lightning
自动集成 TensorBoard 和 WandB,简化日志记录:
import pytorch_lightning as plclass MyModel(pl.LightningModule):def training_step(self, batch, batch_idx):x, y = batchy_hat = self(x)loss = F.cross_entropy(y_hat, y)self.log("train_loss", loss) # 自动记录到日志return loss# 训练时指定 logger
trainer = pl.Trainer(logger=pl.loggers.TensorBoardLogger("logs/"),# 或使用 WandB# logger=pl.loggers.WandbLogger(project="my-project")
)
trainer.fit(model)
工具对比
| 工具/方法 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
| TensorBoard | 训练指标跟踪、模型结构可视化 | 官方集成,功能全面 | 需本地启动服务 |
| WandB | 团队协作、云端实验管理 | 实时同步、超参数跟踪 | 需要注册账号 |
| Matplotlib | 静态数据可视化 | 灵活、无需额外依赖 | 交互性弱 |
| Plotly | 交互式动态图表 | 支持网页嵌入、动态更新 | 学习曲线稍陡峭 |
| Gradio | 快速部署预测 Demo | 零代码交互界面 | 功能相对简单 |
关键场景总结
- 训练过程监控:优先选择 TensorBoard 或 WandB。
- 数据集预览:Matplotlib/Seaborn 快速绘制。
- 预测结果分析:混淆矩阵(分类)、BBox 标注(检测)、Matplotlib 对比图(回归)。
- 协作与报告:WandB 或 TensorBoard.dev(云端共享)。
可根据需求组合使用工具,例如:TensorBoard + Matplotlib(本地开发)或 WandB + Gradio(团队协作 + 演示)。
相关文章:
用deepseek学大模型04-模型可视化与数据可视化
deepseek.com: pytorch可视化工具 生成神经网络图 在 PyTorch 中,可视化神经网络结构的常用工具和方法有以下几种,以下将详细介绍它们的用法: 1. TensorBoard (PyTorch 官方集成) PyTorch 通过 torch.utils.tensorboard 支持 TensorBoard&a…...
一周学会Flask3 Python Web开发-post请求与参数获取
锋哥原创的Flask3 Python Web开发 Flask3视频教程: 2025版 Flask3 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili app.route 装饰器默认只支持get请求。假如我们要让绑定的视图函数支持其他请求方式,我们可以在methods属性里配置…...
第3章 .NETCore核心基础组件:3.1 .NET Core依赖注入
3.1.1 什么是控制反转、依赖注入 杨老师在书中进行了一系列的文字阐述,总结一下就是:软件设计模式中有一种叫做【控制反转】的设计模式,而依赖注入是实现这种设计模式的一个很重要的方式。也就是说学习依赖注入,是学习怎样实现控…...
cs*n 网页内容转为html 加入 onenote
csdn上有好用的内容,我们怎么将它们加到 onenote 里吃灰呢。 一、创建 新html create_html.py import sysdef create_html_file(filename):# 检查是否提供了文件名if not filename:print("请提供HTML文件名")return# 创建HTML内容html_content f"…...
平板作为电脑拓展屏
有线串流(速度更快) spacedesk 打开usb对安卓的连接 用usb线直接连接电脑和平板 无线串流(延迟高,不推荐) todesk pc和手机端同时下载软件,连接后可以进行远程控制或扩展屏幕 spacedesk 连接到同一个…...
Pytorch实现论文之一种基于扰动卷积层和梯度归一化的生成对抗网络
简介 简介:提出了一种针对鉴别器的梯度惩罚方法和在鉴别器中采用扰动卷积,拟解决锐梯度空间引起的训练不稳定性问题和判别器的记忆问题。 论文题目:A Perturbed Convolutional Layer and Gradient Normalization based Generative Adversarial Network(一种基于扰动卷积层…...
关系数据库标准语言SQL
1.SOL称为结构化查询语言,它是由1974年由Boyce和Chamberlin提出的,1975年至1979年IBM公司的San Jose Research Laboratory研制了关系数据库管理系统的原型系统SystemR,并实现了这种语言。 2.SQL(Structured Ouery Language)称为结构化查询语言 3.SQL数…...
AI工具篇:利用DeepSeek+Kimi 辅助生成综述汇报PPT
随着科研和学术报告需求的增加,如何高效地准备一份结构清晰、内容充实的PPT已成为许多研究者的挑战。 传统的PPT制作过程繁琐,需要大量文献收集、数据分析和设计工作,而AI工具能够帮助提升效率,减少重复劳动。 本文将介绍如何使用…...
学习总结2.18
在原本基本的数船的基础上,增加了船不能畸形的要求,船只能是矩形,由此需要在dfs找船前确定是否有畸形船 .* ** *. ** ** .* ** *. 出现畸形船的情况如上图,即两艘船有一个交集时,此时就可以判断出bad pl…...
electron下载文件,弹窗选择下载路径,并通知下载进度
1:在window.js中 引入session import { app, BrowserWindow, ipcMain, dialog, shell, session } from electron; 2:发送下载请求 // 在主进程监听渲染进程发送的 start-download 事件ipcMain.on(start-download, async (event, downloadUrl) > {l…...
【Docker】容器被停止/删除的方式及命令:全面解析与实践指南
文章目录 引言一、容器的生命周期二、停止容器的命令及方式1. docker stop 命令2. docker kill 命令3. docker pause 和 docker unpause 命令4. docker restart 命令 三、删除容器的命令及方式1. docker rm 命令2. docker container prune 命令3. docker rm 与 docker rmi 的区…...
线上就医全流程医药机构接入文档接口代码-医保就医接口php-demo版本
2025年2月18日11:28:03 国密算法开发库推荐 lpilp/guomi 我测试过php 7.2 - 8.0都可以兼容,如果有能力可以自己开发 目前已经开发了核心的接口的测试demo,并且封装了工具类直接写业务逻辑即可,并且已经有线上项目在使用,如果需要demo代码可…...
缓存三大问题及其解决方案
缓存三大问题及其解决方案 1. 前言 在现代系统架构中,缓存与数据库的结合使用是一种经典的设计模式。为了确保缓存中的数据与数据库中的数据保持一致,通常会给缓存数据设置一个过期时间。当系统接收到用户请求时,首先会访问缓存。如果缓…...
大语言模型常用微调与基于SFT微调DeepSeek R1指南
概述 大型语言模型(LLM,Large Language Model)的微调(Fine-tuning)是指在一个预训练模型的基础上,使用特定领域或任务的数据对模型进行进一步训练,以使其在该领域或任务上表现更好。微调是迁移…...
LabVIEW的吞雨测控系统
本案例介绍了一种基于LabVIEW开发的吞雨测控系统,该系统通过建模仿真分析不同控制器模式下的阶跃信号响应,从而选择了最适合的控制器。为了有效解决在控制流量过程中出现的振荡收敛和流量信号大扰动问题,系统采用了改进的积分分离PID算法&…...
redis基础命令
基于内存的数据存储系统 redis中数据以键值对存储的 键区分大小写 redis默认都是使用字符串存储数据 //启动服务 redis-server //连接客户端 redis-cli //连接客户端,--raw表示以原始的形式显示内容 redis-cli --rawset keyname valueget keynamedel keyname //…...
基于Java+SpringBoot+Vue的前后端分离的校园闲置物品交易网站
基于JavaSpringBootVue的前后端分离的校园闲置物品交易网站 前言 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN[新星计划]导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末附源码下载链接…...
K8s 证书认知(K8s Certificate Awareness)
K8s 证书认知 在谈起 Kubernetes 证书时,总感觉其涵盖的内容繁多,仿佛千头万绪,让人不知该从何处着手阐述。为了更好地理清思路,本文将对相关内容进行系统的梳理和记录。 1、证书及链路关系 Kubeadm部署的集群,K8s …...
前x-ai首席科学家karpathy的从零构建ChatGPT视频学习笔记--8000字长图文笔记预警(手打纯干货,通俗易懂)
2025.2.17晚上21:57看完了整个视频,作为一个ai专业的学生虽然每天都在用ai,但是对于其背后的原理却不是那么清楚,而卡帕西的这支视频却让我醍醐灌顶,而且全程听起来很舒服,没有知识强行进入脑子的痛感,在他…...
【智慧校园】分体空调节能监管:打造高效节能的学习环境
随着科技的飞速发展和生活品质的不断提升,人们对于家居和办公环境的舒适度与智能化要求也越来越高。分体空调集中控制系统作为一种先进的空调管理方式,正逐渐成为现代家庭和办公场所的标配,为用户带来更加便捷、高效和节能的空调使用体验。随…...
PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建
制造业采购供应链管理是企业运营的核心环节,供应链协同管理在供应链上下游企业之间建立紧密的合作关系,通过信息共享、资源整合、业务协同等方式,实现供应链的全面管理和优化,提高供应链的效率和透明度,降低供应链的成…...
微信小程序云开发平台MySQL的连接方式
注:微信小程序云开发平台指的是腾讯云开发 先给结论:微信小程序云开发平台的MySQL,无法通过获取数据库连接信息的方式进行连接,连接只能通过云开发的SDK连接,具体要参考官方文档: 为什么? 因为…...
Java + Spring Boot + Mybatis 实现批量插入
在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法:使用 MyBatis 的 <foreach> 标签和批处理模式(ExecutorType.BATCH)。 方法一:使用 XML 的 <foreach> 标签ÿ…...
【分享】推荐一些办公小工具
1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由:大部分的转换软件需要收费,要么功能不齐全,而开会员又用不了几次浪费钱,借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...
【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error
在前端开发中,JavaScript 异常是不可避免的。随着现代前端应用越来越多地使用异步操作(如 Promise、async/await 等),开发者常常会遇到 Uncaught (in promise) error 错误。这个错误是由于未正确处理 Promise 的拒绝(r…...
【FTP】ftp文件传输会丢包吗?批量几百个文件传输,有一些文件没有传输完整,如何解决?
FTP(File Transfer Protocol)本身是一个基于 TCP 的协议,理论上不会丢包。但 FTP 文件传输过程中仍可能出现文件不完整、丢失或损坏的情况,主要原因包括: ✅ 一、FTP传输可能“丢包”或文件不完整的原因 原因描述网络…...
二维FDTD算法仿真
二维FDTD算法仿真,并带完全匹配层,输入波形为高斯波、平面波 FDTD_二维/FDTD.zip , 6075 FDTD_二维/FDTD_31.m , 1029 FDTD_二维/FDTD_32.m , 2806 FDTD_二维/FDTD_33.m , 3782 FDTD_二维/FDTD_34.m , 4182 FDTD_二维/FDTD_35.m , 4793...
写一个shell脚本,把局域网内,把能ping通的IP和不能ping通的IP分类,并保存到两个文本文件里
写一个shell脚本,把局域网内,把能ping通的IP和不能ping通的IP分类,并保存到两个文本文件里 脚本1 #!/bin/bash #定义变量 ip10.1.1 #循环去ping主机的IP for ((i1;i<10;i)) doping -c1 $ip.$i &>/dev/null[ $? -eq 0 ] &&am…...
【深尚想】TPS54618CQRTERQ1汽车级同步降压转换器电源芯片全面解析
1. 元器件定义与技术特点 TPS54618CQRTERQ1 是德州仪器(TI)推出的一款 汽车级同步降压转换器(DC-DC开关稳压器),属于高性能电源管理芯片。核心特性包括: 输入电压范围:2.95V–6V,输…...
python打卡day49@浙大疏锦行
知识点回顾: 通道注意力模块复习空间注意力模块CBAM的定义 作业:尝试对今天的模型检查参数数目,并用tensorboard查看训练过程 一、通道注意力模块复习 & CBAM实现 import torch import torch.nn as nnclass CBAM(nn.Module):def __init__…...
