news 2026/4/16 16:21:08

DAY 46 Tensorborad使用介绍

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
DAY 46 Tensorborad使用介绍

一、Tensorborad的发展历史和原理

1.发展历史

TensorBoard是TensorFlow生态中的官方可视化工具(也可无缝集成 PyTorch),用于实时监控训练过程、可视化模型结构、分析数据分布、对比实验结果等。它通过网页端交互界面,将枯燥的训练日志转化为直观的图表和图像,帮助开发者快速定位问题、优化模型。

简单来说,TensorBoard是TensorFlow自带的一个「可视化工具」,就像给机器学习模型训练过程装了一个「监控屏幕」。你可以用它直观看到训练过程中的数据变化(比如损失值、准确率)、模型结构、数据分布等,不用盯着一堆枯燥的数字看,对新手非常友好。

TensorBoard 的发展历程如下:

- 2015 年随着 TensorFlow 框架一起发布,最初是为了满足深度学习研究者可视化复杂模型训练过程的需求。2016-2018 年新增了更多可视化功能,图像 / 音频可视化:可以直接看训练数据里的图片、听音频(比如在图像分类任务中,查看输入的图片是否正确)。

直方图:展示数据分布(比如权重参数的分布是否合理)。

多运行对比:同时对比多个训练任务的结果(比如不同学习率的效果对比)。

- 2019 年后与 PyTorch 兼容,变得更通用了。功能进一步丰富,比如支持3D 可视化、模型参数调试等。

目前这个工具还在不断发展,比如一些额外功能在tensorboardX上存在,但是我们目前只需要要用到最经典的几个功能即可

(1)保存模型结构图

(2)保存训练集和验证集的loss变化曲线,不需要手动打印了

(3)保存每一个层结构权重分布

(4)保存预测图片的预测信息

2.原理

TensorBoard 的核心原理就是在训练过程中,把训练过程中的数据(比如损失、准确率、图片等)先记录到日志文件里,再通过工具把这些日志文件可视化成图表,这样就不用自己手动打印数据或者用其他工具画图。

所以核心就是2个步骤:

- 数据怎么存?—— 先写日志文件

训练模型时,TensorBoard 会让程序把训练数据(比如损失值、准确率)和模型结构等信息,写入一个特殊的日志文件(.tfevents 文件)

- 数据怎么看?—— 用网页展示日志

写完日志后,TensorBoard 会启动一个本地网页服务,自动读取日志文件里的数据,用图表、图像、文本等形式展示出来。如果只用 print(损失值) 或者自己用 matplotlib 画图,不仅麻烦,还得手动保存数据、写代码,尤其训练几天几夜时,根本没法实时盯着看。而 TensorBoard 能自动把这些数据 “存下来 + 画出来”,还能生成网页版的可视化界面,随时刷新查看。

二、Tensorborad的常见操作

1.日志目录自动管理

log_dir = 'runs/cifar10_mlp_experiment' if os.path.exists(log_dir): i = 1 while os.path.exists(f"{log_dir}_{i}"): i += 1 log_dir = f"{log_dir}_{i}" writer = SummaryWriter(log_dir) #关键入口,用于写入数据到日志目录

2.记录标量数据(Scalar)

# 记录每个 Batch 的损失和准确率 writer.add_scalar('Train/Batch_Loss', batch_loss, global_step) writer.add_scalar('Train/Batch_Accuracy', batch_acc, global_step) # 记录每个 Epoch 的训练指标 writer.add_scalar('Train/Epoch_Loss', epoch_train_loss, epoch) writer.add_scalar('Train/Epoch_Accuracy', epoch_train_acc, epoch)

3.可视化模型结构(Graph)

dataiter = iter(train_loader) images, labels = next(dataiter) images = images.to(device) writer.add_graph(model, images) # 通过真实输入样本生成模型计算图

4.可视化图像(Image)

# 可视化原始训练图像 img_grid = torchvision.utils.make_grid(images[:8].cpu()) # 将多张图像拼接成网格状(方便可视化),将前8张图像拼接成一个网格 writer.add_image('原始训练图像', img_grid) # 可视化错误预测样本(训练结束后) wrong_img_grid = torchvision.utils.make_grid(wrong_images[:display_count]) writer.add_image('错误预测样本', wrong_img_grid)

5.记录权重和梯度直方图(Histogram)

if (batch_idx + 1) % 500 == 0: for name, param in model.named_parameters(): writer.add_histogram(f'weights/{name}', param, global_step) # 权重分布 if param.grad is not None: writer.add_histogram(f'grads/{name}', param.grad, global_step) # 梯度分布

6.启动tensorboard

运行代码后,会在指定目录(如 runs/cifar10_mlp_experiment_1)生成 .tfevents 文件,存储所有 TensorBoard 数据。

在终端执行(需进入项目根目录):

tensorboard --logdir=runs # 假设日志目录在 runs/ 下

打开浏览器,输入终端提示的 URL(通常为 http://localhost:6006)。

@浙大疏锦行

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 13:38:29

2、Puppet入门指南

Puppet入门指南1. Puppet运行模式与部署模型Puppet代理的运行方式多样,既可以作为守护进程运行,也能通过cron等机制触发,或者手动触发连接。通常做法是将Puppet作为守护进程运行,让它定期与主服务器核对配置是否最新,或…

作者头像 李华
网站建设 2026/4/16 14:02:28

15、高级 SQL 与编程框架实战解析

高级 SQL 与编程框架实战解析 1. 多表查询之 JOIN 操作 在实际应用中,单表查询的情况较为少见。例如,我们通常会想知道“展示电子产品类别下的所有产品”,而非“展示类别 ID 为 2 的所有产品”。为了从多个表中提取信息,需要使用 JOIN 操作。 1.1 JOIN 基本语法 基本的…

作者头像 李华
网站建设 2026/4/16 15:31:31

Dify与Flask/Django框架共存的架构设计

Dify与Flask/Django框架共存的架构设计 在企业智能化转型加速的今天,越来越多的传统业务系统开始尝试引入大语言模型(LLM)能力——从智能客服到自动报告生成,从工单分类到知识问答。然而,现实往往并不理想:…

作者头像 李华
网站建设 2026/4/16 12:23:51

Dify平台的实体抽取准确率实测报告

Dify平台的实体抽取能力实测分析 在企业级AI应用快速落地的今天,如何让大语言模型(LLM)真正服务于具体的业务场景,而非停留在“能说会道”的对话层面,成为技术选型的关键考量。尤其是在工单处理、客户意图识别、合同信…

作者头像 李华
网站建设 2026/4/16 14:29:24

Dify如何保证多租户环境下的隔离安全性?

Dify如何保证多租户环境下的隔离安全性? 在企业级 AI 应用快速落地的今天,一个核心挑战浮出水面:如何让多个团队、部门甚至客户安全地共用同一套大模型开发平台,而不会彼此“窥探”或干扰?这不仅是性能问题&#xff0c…

作者头像 李华
网站建设 2026/4/16 12:13:58

使用libusb编写用户态驱动操作指南

打开物理世界的通用钥匙:用 libusb 编写用户态 USB 驱动实战指南 你有没有遇到过这样的场景?手头有一块自研的 USB 设备,MCU 已经跑通了通信协议,但主机端却卡在“找不到设备”或“权限被拒绝”的红字报错上。传统做法是写内核驱…

作者头像 李华