用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,但是对于其背后的原理却不是那么清楚,而卡帕西的这支视频却让我醍醐灌顶,而且全程听起来很舒服,没有知识强行进入脑子的痛感,在他…...

【智慧校园】分体空调节能监管:打造高效节能的学习环境
随着科技的飞速发展和生活品质的不断提升,人们对于家居和办公环境的舒适度与智能化要求也越来越高。分体空调集中控制系统作为一种先进的空调管理方式,正逐渐成为现代家庭和办公场所的标配,为用户带来更加便捷、高效和节能的空调使用体验。随…...
内存分配函数malloc kmalloc vmalloc
内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...

React第五十七节 Router中RouterProvider使用详解及注意事项
前言 在 React Router v6.4 中,RouterProvider 是一个核心组件,用于提供基于数据路由(data routers)的新型路由方案。 它替代了传统的 <BrowserRouter>,支持更强大的数据加载和操作功能(如 loader 和…...

什么是库存周转?如何用进销存系统提高库存周转率?
你可能听说过这样一句话: “利润不是赚出来的,是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业,很多企业看着销售不错,账上却没钱、利润也不见了,一翻库存才发现: 一堆卖不动的旧货…...
css的定位(position)详解:相对定位 绝对定位 固定定位
在 CSS 中,元素的定位通过 position 属性控制,共有 5 种定位模式:static(静态定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)和…...

ardupilot 开发环境eclipse 中import 缺少C++
目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心
当仓库学会“思考”,物流的终极形态正在诞生 想象这样的场景: 凌晨3点,某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径;AI视觉系统在0.1秒内扫描包裹信息;数字孪生平台正模拟次日峰值流量压力…...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)
本文把滑坡位移序列拆开、筛优质因子,再用 CNN-BiLSTM-Attention 来动态预测每个子序列,最后重构出总位移,预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵(S…...

听写流程自动化实践,轻量级教育辅助
随着智能教育工具的发展,越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式,也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建,…...

保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek
文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama(有网络的电脑)2.2.3 安装Ollama(无网络的电脑)2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...

GruntJS-前端自动化任务运行器从入门到实战
Grunt 完全指南:从入门到实战 一、Grunt 是什么? Grunt是一个基于 Node.js 的前端自动化任务运行器,主要用于自动化执行项目开发中重复性高的任务,例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...