目录

一、TensorBoard 发展历史与原理

1. 演进历程

2. 核心架构原理

二、TensorBoard 核心功能操作

1. 基础配置方法

2. 常用功能速查表

三、CIFAR10 实战演示

1. MLP 模型监控配置

2. CNN 特征可视化

四、TensorBoard 高级功能

1. 超参数调优

2. 3D点云可视化

五、启动与界面操作指南

1. 终端启动命令

2. 界面操作技巧

六、PyTorch Lightning 集成

自动日志记录配置

七、常见问题解决方案

TensorBoard 使用问题排查

八、最佳实践建议


一、TensorBoard 发展历史与原理

1. 演进历程

2. 核心架构原理

工作流程

  1. 训练程序生成日志文件(*.tfevents

  2. TensorBoard 服务监听日志目录

  3. 浏览器访问可视化面板

二、TensorBoard 核心功能操作

1. 基础配置方法

from torch.utils.tensorboard import SummaryWriter# 初始化写入器
writer = SummaryWriter(log_dir='runs/exp1',  # 实验目录flush_secs=10         # 写入磁盘频率
)# 记录标量数据
writer.add_scalar('Loss/train', train_loss, global_step=epoch)# 记录图像
writer.add_image('Sample', img_tensor, global_step=epoch)# 记录模型图
writer.add_graph(model, input_tensor)# 关闭写入器
writer.close()

2. 常用功能速查表

功能方法适用场景
标量图表add_scalar()损失/准确率跟踪
图像展示add_images()输入/输出可视化
模型结构add_graph()网络调试
直方图add_histogram()参数分布监控
嵌入向量add_embedding()高维数据降维
PR曲线add_pr_curve()分类阈值分析

三、CIFAR10 实战演示

1. MLP 模型监控配置

def train_mlp():writer = SummaryWriter('runs/cifar10_mlp')model = MLP().to(device)for epoch in range(10):model.train()for i, (inputs, labels) in enumerate(train_loader):# ...训练步骤...# 每100步记录一次if i % 100 == 0:writer.add_scalar('Loss/train', loss.item(), epoch*len(train_loader)+i)writer.add_scalar('Accuracy/train', acc, epoch*len(train_loader)+i)# 验证集记录val_acc = test(model, val_loader)writer.add_scalar('Accuracy/val', val_acc, epoch)# 记录参数分布for name, param in model.named_parameters():writer.add_histogram(f'params/{name}', param, epoch)writer.add_histogram(f'grads/{name}', param.grad, epoch)writer.close()

2. CNN 特征可视化

def train_cnn():writer = SummaryWriter('runs/cifar10_cnn')model = CNN().to(device)# 添加模型图dummy_input = torch.rand(1, 3, 32, 32).to(device)writer.add_graph(model, dummy_input)for epoch in range(10):# ...训练代码...# 记录特征图if epoch % 2 == 0:sample, _ = next(iter(val_loader))feature_maps = get_feature_maps(model, sample[0:1])  # 自定义获取特征图函数writer.add_images('FeatureMaps/conv1', feature_maps[0], epoch, dataformats='NCHW')# 记录混淆矩阵cm = compute_confusion_matrix(model, val_loader)writer.add_figure('ConfusionMatrix', plot_confusion_matrix(cm), epoch)writer.close()

四、TensorBoard 高级功能

1. 超参数调优

from torch.utils.tensorboard.summary import hparamsdef log_hparams(writer, config, metrics):# 记录超参数和最终指标writer.add_hparams(hparam_dict=config,metric_dict=metrics,run_name='hparam_tuning')# 使用示例
log_hparams(writer, {'lr': 0.01, 'bsize': 64},{'accuracy': 0.92, 'loss': 0.2})

2. 3D点云可视化

# 适用于3D计算机视觉任务
points = torch.rand(100, 3)  # 100个3D点
labels = torch.randint(0, 5, (100,))  # 分类标签writer.add_embedding(points,metadata=labels,tag='3D_points',global_step=epoch
)

五、启动与界面操作指南

1. 终端启动命令

# 基本启动
tensorboard --logdir=runs

# 指定端口和主机
tensorboard --logdir=runs --port=6006 --host=0.0.0.0

# 多实验目录比较
tensorboard --logdir=run1:runs/exp1,run2:runs/exp2

2. 界面操作技巧

功能操作方式
平滑曲线调整Smoothing滑块
下载数据点击图表右上角下载按钮
对比实验勾选左侧不同运行记录
3D旋转鼠标拖拽3D可视化区域

六、PyTorch Lightning 集成

自动日志记录配置

import pytorch_lightning as pl
from pytorch_lightning.loggers import TensorBoardLoggerlogger = TensorBoardLogger(save_dir='lightning_logs',name='cifar10_experiment',version='v1.0'
)trainer = pl.Trainer(logger=logger,max_epochs=10,log_every_n_steps=50
)
trainer.fit(model)

七、常见问题解决方案

TensorBoard 使用问题排查

问题现象可能原因解决方案
无数据显示日志路径错误检查--logdir参数匹配
图表异常数据格式错误验证张量形状和数据类型
加载缓慢日志文件过大减少记录频率或清理旧日志
无法访问端口占用更换端口或杀死占用进程

八、最佳实践建议

  1. 日志组织规范

    runs/
    ├── exp1/  # 实验1
    ├── exp2/  # 实验2
    └── hparams/  # 超参数搜索

  2. 高效记录原则

    • 非必要不记录高频率数据

    • 定期清理旧实验数据

    • 对大型张量使用降采样

  3. 团队协作技巧

    # 将TensorBoard服务共享给团队
    tensorboard dev upload --logdir runs \
    --name "My Experiment" \
    --description "CIFAR10 with ResNet18"

@浙大疏锦行

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

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

相关文章

Swift 中 Result 类型全解析:从基础到进阶

在现代 iOS 开发中,Swift 的 Result 类型是处理同步与异步错误的一大利器。相比传统的 throws / do-catch 语法,它更清晰、结构化,也更易于组合式编程。 本文将带你从 Result 的基础定义出发,逐步深入其在实际项目中的多种应用&am…

Github 2025-06-28 Rust开源项目日报 Top10

根据Github Trendings的统计,今日(2025-06-28统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Rust项目10Rust实现的非官方Bitwarden兼容服务器 创建周期:2317 天开发语言:Rust协议类型:GNU Affero General Public License v3.0Star数量…

python 写一个判断文本中是否有手机号的函数,并提取出文本中的手机号

我们需要判断文本中是否有手机号,并提取出手机号。 中国大陆的手机号规则: 1. 通常为11位数字。 2. 目前手机号段分配如下: - 移动号段:134(0-8)、135、136、137、138、139、147、148、150、151、152、157、158、159、172、178、1…

作物生长模型Oryza V3实战12:drate程序详解

drate(v2).exe,可以通过观察移植日、穗部分化、开花和成熟的物候日期(即日和年),DRATE(v2)用于校准四个阶段的发展速率:幼苗期(DVRJ,oCday-1)、光周期敏感期(DVRI,oCday-1)、穗部发育期(DVRP,oCday-1)和生殖期(DVRR,oCday-1)。 一 准备输入文件 1、准备.crp,.…

利用视觉-语言模型搭建机器人灵巧操作的支架

25年6月来自斯坦福和德国卡尔斯鲁厄理工的论文“Scaffolding Dexterous Manipulation with Vision-Language Models”。 灵巧机械手对于执行复杂的操作任务至关重要,但由于演示收集和高维控制的挑战,其训练仍然困难重重。虽然强化学习 (RL) 可以通过在模…

面试拷打-20250701

memcopy和memmov 详细解释 示例1:不重叠的内存区域 正常复制。 示例2:重叠的内存区域 原始数据:src2是一个包含字符串"HelloWorld"的字符数组。使用memcpy: memcpy(src2 2, src2, 5);试图将src2中的前5个字符复制…

什么是 BigKey?

Redis BigKey 深度解析:识别、危害与优化方案 什么是 BigKey? 在 Redis 中,BigKey 是指存储大量数据的单个键,这些键通常具有异常大的内存占用或包含大量元素。BigKey 不是由数据类型定义,而是由其资源消耗决定的。 …

量化选股策略 聚宽

# 量化选股策略完整分析与优化建议 ## 策略整体架构分析 这个量化交易策略主要由以下几个核心部分组成: 1. **初始化设置**:配置基准指数、交易参数和全局变量 2. **选股逻辑**:通过财务指标筛选优质股票 3. **股票过滤**:排除…

Python 数据分析:numpy,抽提,布尔索引2。

目录 1 示例代码2 欢迎纠错3 论文写作/Python 学习智能体------以下关于 Markdown 编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右S…

解决leetcode第3597题分割字符串

3597. 分割字符串 难度:中等 问题描述: 给你一个字符串 s,按照以下步骤将其分割为 互不相同的段 : 从下标 0 开始构建一个段。 逐字符扩展当前段,直到该段之前未曾出现过。 只要当前段是唯一的,就将其…

电源芯片之DCDC初探索ING

1. 概述 DC-DC转换器的意思是直流变直流(不同的直流电源值得转换),是一种在直流电路中将一个电压值的电能变为另一个电压值的电能装置。 DC-DC转换器一般由控制芯片、电感线圈、二极管、三极管、电容器构成。 2. 基本拓扑结构 2.1 非隔离…

JavaEE:分布式session

一、使用Redis存储分布式session&#xff1a; 1.SpringBoot整合Redis&#xff0c;见如下地址&#xff1a; JavaEE&#xff1a;SpringBoot整合Redis_a526001650a-CSDN博客 2.代码实现分布式session存储(此处以token为例)&#xff1a; Autowired private RedisTemplate<St…

OpenCV CUDA模块设备层-----“大于阈值设为零” 的图像处理函数 thresh_to_zero_inv_func()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 OpenCV 的 CUDA 模块&#xff08;cudev&#xff09; 中的一个仿函数生成器&#xff0c;用于创建一个 “大于阈值设为零” 的图像处理函数对象。 …

FastGPT与MCP:解锁AI新时代的技术密码

一、AI 浪潮中的新星&#xff1a;FastGPT 与 MCP 登场 在当今科技飞速发展的时代&#xff0c;人工智能&#xff08;AI&#xff09;已成为推动各行业变革的核心力量。从智能语音助手到复杂的图像识别系统&#xff0c;AI 的应用无处不在&#xff0c;而其中的关键技术 —— 语言模…

browser-tools-mcp + excel-mcp-server + cursor 实现读取网页信息自动写入Excel

browser-tools-mcp excel-mcp-server cursor 实现读取网页信息自动写入Excel 文章目录 browser-tools-mcp excel-mcp-server cursor 实现读取网页信息自动写入Excel一、安装node.js和npm1、安装nvm2、安装最新版本的node.js 二、安装browser-tools-mcp1、安装 BrowserTools…

Linux安装JDK和Maven

Linux安装JDK和Maven 安装JDK1.8 oracle官网 https://www.oracle.com 下载包地址&#xff1a;https://www.oracle.com/java/technologies/downloads/archive/ 步骤1&#xff1a;官网下载压缩包 点击想要下载的版本&#xff0c;需要登录Oracle的账号&#xff0c;没有的话需要…

MySQL主从复制与数据库集群深度解析

一、主从复制核心架构与复制模式 MySQL主从复制是构建分布式数据库的基础技术&#xff0c;通过日志同步机制实现数据冗余与读写分离。其核心架构分为三层&#xff1a; 日志记录层&#xff1a;主库将数据变更写入二进制日志&#xff08;Binlog&#xff09;网络传输层&#xff…

安装emsdk 4.0.10报Connection reset by peer解决

出错如下: 使用浏览器下载所需文件 https://storage.googleapis.com/webassembly/emscripten-releases-builds/deps/node-v22.16.0-darwin-x64.tar.gz 移动到到emsdk/downloads下 修改emsdk.py download_even_if_exists=True 设置环境变量

win11,visual studio 2022,配置dcmtk,opencv

一、配置dcmtk 1 文件下载---地址&#xff0c;Software Development based on DCMTK - dicom.offis.de 源文件下载&#xff0c;选择.zip下载&#xff0c;.tar.gz为Linux和macOS下面常见的压缩包 支持库下载 解决 DCMTK 在 Windows 上编译时所需的依赖库问题 libiconv GNU有…

2025 最新 Appium Inspector 环境搭建教程

1 环境搭建背景 版本升级&#xff1a;Appium 2.0 版本替代 1.x&#xff0c;原 Appium Desktop 因安全漏洞和功能废弃不再适用。需求痛点&#xff1a;Android Studio 仅支持 debug 程序元素定位&#xff0c;需通过 Appium Inspector 实现通用 APK 元素定位。 2 环境搭建步骤 …