在PyTorch中使用TensorBoard

文章目录

  • 在PyTorch中使用TensorBoard
    • 1.安装
    • 2.TensorBoard使用
      • 2.1创建SummaryWriter实例
      • 2.2利用add_scalar()记录metrics
      • 2.3关闭Writer
      • 2.4启动TensorBoard
    • 3.本地连接服务器使用TensorBoard
      • 3.1方法一:使用SSH命令进行本地端口转发
      • 3.2方法二:启动TensorBoard时添加参数--bind_all(推荐✅)
      • 3.3方法三:在终端工具里面配置SSH隧道或端口转发
    • 参考

在PyTorch中使用TensorBoard

在机器学习中,要改进模型的某些参数,我们通常需要对其进行衡量。TensorBoard 是用于提供机器学习工作流期间所需测量和呈现的工具。它使我们能够跟踪实验指标(例如损失和准确率),呈现模型计算图,将嵌入向量投影到较低维度的空间等

1.安装

pip install tensorboard

2.TensorBoard使用

2.1创建SummaryWriter实例

import torch
from torch.utils.tensorboard import SummaryWriter

# 记录的内容保存在“./log”里面,log里面会生成events.out.tfevents的文件
writer = SummaryWriter('./log')  

2.2利用add_scalar()记录metrics

了解损失等关键指标以及它们在训练过程中的变化是非常重要的。标量有助于保存每个训练步骤的损失值,或者每个epoch之后的精度。

使用 add_scalar(tag, scalar_value, global_step=None, walltime=None)记录标量值

# 用法示例:
writer.add_scalar('loss', loss, epoch)
writer.add_scalar('accuracy', accuracy, epoch)
'''
* @name: tensorboard_test.py
* @description:创建一个线性回归模型,并使用add_scalar记录损失值
'''
x = torch.arange(-5, 5, 0.1).view(-1, 1)
y = -5 * x + 0.1 * torch.randn(x.size())

model = torch.nn.Linear(1, 1)
criterion = torch.nn.MSELoss()
optimizer = torch.optim.SGD(model.parameters(), lr = 0.1)

def train_model(total_epoch):
    for epoch in range(total_epoch):
        y1 = model(x)
        loss = criterion(y1, y)
        writer.add_scalar("Loss/train", loss, epoch)  # <-- 注意看这里!!!
        optimizer.zero_grad()
        loss.backward()
        optimizer.step()
        
train_model(10)

writer.flush()  # 调用flush()方法确保所有挂起的事件都已写入磁盘

2.3关闭Writer

最后调用 close() 方法来关闭Writer,释放资源。

writer.close()

2.4启动TensorBoard

最后,启动TensorBoard,指定上面我们使用的根日志目录。当不需要可视化时,在终端按下Ctrl+C关闭TensorBoard即可。

# 第一种写法
tensorboard --logdir=./log --host=127.0.0.1 --port=6006 --bind_all
# 第二种写法
tensorboard --logdir ./log --host 127.0.0.1 --port 6006 --bind_all

# 常用启动命令(只需给定--logdir参数,其余默认)
tensorboard --logdir ./log
  • 参数--logdir指向TensorBoard将在其中查找它可以显示的事件文件的目录。TensorBoard将递归遍历以logdir为根的目录结构,寻找.*tfevents.*文件。
  • 参数--host表示IP地址,默认为127.0.0.1
  • 参数--port表示端口号,默认为6006
  • 参数--bind_all指定 TensorBoard 绑定所有网络接口,而不仅仅是本地接口。默认情况下,TensorBoard 仅在本地主机上运行,只能通过 localhost 访问。如果添加 --bind_all 参数,就可以从网络中的其他设备访问 TensorBoard。这在需要远程访问时非常有用,例如在服务器上训练模型并从个人电脑上查看训练过程。

image-20240703150834341

该仪表板显示了损失随着epoch的变化,还可以使用它来跟踪训练速度、学习率和其他标量值。

3.本地连接服务器使用TensorBoard

由于我们通常是在服务器上运行项目,那么TensorBoard生成的events.out.tfevents格式文件是保存在服务器上面的,如果想要观测 metrics 就需要将文件下载到本地,然后启动TensorBoard才可以在本地查看。为了解决这一问题,我们可以使用SSH隧道(也称SSH端口转发),将远程服务器的TensorBoard转发到本地。具体实现如下:

3.1方法一:使用SSH命令进行本地端口转发

ssh -L [本地端口]:[远程地址]:[远程端口] [用户名]@[远程服务器IP]

# example:
ssh -L 6006:127.0.0.1:6006 root@192.168.1.224

解释:这条命令将本地的6006端口转发到远程服务器192.168.1.224的6006端口上。这样我们就可以通过在本地访问127.0.0.1:6006来访问远程服务器的127.0.0.1:6006。

3.2方法二:启动TensorBoard时添加参数–bind_all(推荐✅)

tensorboard --logdir ./log --bind_all

在本地通过(远程服务器IP地址):6006/来查看训练过程。

3.3方法三:在终端工具里面配置SSH隧道或端口转发

流行的终端工具肯定是Xshell,Xshell的隧道配置可以查看这篇博客【使用Xshell/ssh 连接 远程服务器使用Tensorboard】。但是我个人喜欢使用Tabby,Tabby是一款免费的颜值很高的终端工具,也推荐大家使用。

Tabby的端口转发的添加,在设置->配置和连接->端口里面进行配置添加。

image-20240702224610667

参考

  • How to use TensorBoard with PyTorch
  • Visualizing Models, Data, and Training with TensorBoard
  • torch.utils.tensorboard官方文档
  • 使用TensorBoard可视化训练过程
  • 在Pytorch中使用Tensorboard可视化训练过程

😃😃😃

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/774217.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

昇思25天学习打卡营第12天|ResNet50迁移学习

昇思25天学习打卡营第12天|ResNet50迁移学习 前言ResNet50迁移学习数据准备下载数据集 加载数据集数据集可视化 训练模型构建Resnet50网络固定特征进行训练训练和评估可视化模型预测 个人任务打卡&#xff08;读者请忽略&#xff09;个人理解与总结 前言 非常感谢华为昇思大模型…

File类常用构造方法及方法详解

File类是对文件或者目录的一系列操作。如文件和目录的创建、检查、删除、路径获取等。现介绍下常用构造方法和方法。 一、构造方法。 File类提供了多个构造方法来创建File对象&#xff0c;以表示文件或目录。 1. File(String pathname) 通过指定文件路径名创建File对象。 参…

Vatee万腾平台:打造未来智能生态圈

在科技日新月异的今天&#xff0c;我们正步入一个由智能技术驱动的全新时代。在这个时代里&#xff0c;万物互联、数据驱动、智能决策已成为常态&#xff0c;而Vatee万腾平台正以其卓越的技术实力和前瞻性的战略眼光&#xff0c;致力于打造未来的智能生态圈&#xff0c;引领我们…

三、数据库系统(考点篇)

1、三级模式一两级映像 内模式&#xff1a;管理如何存储物理的 数据 &#xff0c;对数据的存储方式、优化、存放等。 模式&#xff1a;又称为概念模式&#xff0c; 就是我们通常使用的表这个级别 &#xff0c;根据应用、需求将物理数据划分成一 张张表。 外模式&#xff1a;…

RFID电子锁在物流货运智能锁控管理的创新方案

物流货运锁控的现实挑战 易损性&#xff1a;传统锁具易受物理破坏&#xff0c;无法抵御恶意撬锁。 低效率&#xff1a;依赖人工操作&#xff0c;开锁速度慢&#xff0c;影响作业效率。 高成本&#xff1a;钥匙的制作、管理和丢失替换成本高昂。 监控缺陷&#xff1a;缺乏实…

【对顶堆 优先队列】295. 数据流的中位数

本文涉及知识点 对顶堆 优先队列 LeetCode295. 数据流的中位数 中位数是有序整数列表中的中间值。如果列表的大小是偶数&#xff0c;则没有中间值&#xff0c;中位数是两个中间值的平均值。 例如 arr [2,3,4] 的中位数是 3 。 例如 arr [2,3] 的中位数是 (2 3) / 2 2.5 …

【项目实践】贪吃蛇

一、游戏效果展示二、博客目标三、使用到的知识四、Win32 API 介绍 4.1 WIn32 API4.2 控制台程序4.3 控制屏幕上的坐标COORD4.4 GetStdHandle4.5 GetConsoleCursorInfo 4.5.1 CONSOLE_CURSOR_INFO 4.6 SetConsoleCursorInfo4.7 SetConsoleCursorPosition4.8 GetAsyncKeyState 五…

跟《经济学人》学英文:2024年07月06日这期 Amazon turns 30

As Amazon turns 30, three factors will define its next decade It will have to deal with trustbusters, catch up on AI and revive its core business 它将不得不应对反垄断者&#xff0c;追赶人工智能并重振其核心业务 trustbuster&#xff1a; 美 [ˈtrəs(t)ˌbəs…

MUNIK解读ISO26262--什么是系统安全分析

功能安全之系统阶段-系统安全分析 安全分析在ISO26262标准中横跨了多个阶段例如&#xff1a;概念阶段、系统架构阶段、硬件详设阶段和软件详设阶段&#xff0c;其中part5中的安全分析工具FMEDA是标准中唯一一个和ASIL等级挂钩的&#xff0c;在Part5中也用了很大篇幅在介绍该安…

微信小程序 调色板

注意&#xff1a;是在uniapp中直接使用的一个color-picker插件&#xff0c;改一下格式即可在微信小程序的原生代码中使用 https://github.com/KirisakiAria/we-color-picker 这是插件的地址&#xff0c;使用的话先把这个插件下载下来&#xff0c;找到src&#xff0c;在项目创…

基于java+springboot+vue实现的电影院购票系统(文末源码+Lw)274

摘 要 传统办法管理信息首先需要花费的时间比较多&#xff0c;其次数据出错率比较高&#xff0c;而且对错误的数据进行更改也比较困难&#xff0c;最后&#xff0c;检索数据费事费力。因此&#xff0c;在计算机上安装电影院购票系统软件来发挥其高效地信息处理的作用&#xf…

Nginx 常用配置与应用

Nginx 常用配置与应用 官网地址&#xff1a;https://nginx.org/en/docs/ 目录 Nginx 常用配置与应用 Nginx总架构 正向代理 反向代理 Nginx 基本配置反向代理案例 负载均衡 Nginx总架构 进程模型 正向代理 反向代理 Nginx 基本配置反向代理案例 负载均衡 Nginx 基本配置…

【高性能服务器】select模型

&#x1f525;博客主页&#xff1a; 我要成为C领域大神&#x1f3a5;系列专栏&#xff1a;【C核心编程】 【计算机网络】 【Linux编程】 【操作系统】 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 本博客致力于知识分享&#xff0c;与更多的人进行学习交流 IO多路复用就是复用…

Cgi上传文件 注意事项

//核心代码 ofstream outfile("/opt/software/" file.getFilename(), ios::out | ios::binary); outfile << file.getData(); //错误方式&#xff1a;outfile << file.getData() <<endl; outfile.close(); 例如&#xff1a;上传tar.gz格式的压缩…

一站式天气预报解决方案,API接口轻松接入

天气对我们的日常生活有着重要的影响&#xff0c;无论是出门旅行还是安排工作&#xff0c;都需要提前了解天气情况。WAPI平台提供了一站式天气预报解决方案&#xff0c;通过简单的API接口&#xff0c;轻松获取各类天气预报数据。 这个API接口提供了丰富的天气预报信息&#xf…

海睿思问数(TableGPT):开创企业新一代指标应用模式

1 指标建设对企业经营管理数字化的价值分析 指标是将海量数据中关键信息提炼和挖掘出来&#xff0c;以数据为载体展示企业经营管理和分析中的统计量。它通过分析数据&#xff0c;形成一个具有度量值的汇总结果&#xff0c;使得业务状态可以被描述、量化和分解。指标通常由度量…

秋招突击——设计模式补充——简单工厂模式和策略模式

文章目录 引言正文简单工厂模式策略模式策略模式和工厂模式的结合策略模式解析 总结 引言 一个一个来吧&#xff0c;面试腾讯的时候&#xff0c;问了我单例模式相关的东西&#xff0c;自己这方面的东西&#xff0c;还没有看过。这里需要需要补充一下。但是设计模式有很多&…

棱镜七彩上榜数说安全《2024年中国网络安全市场全景图》

2024年7月4日&#xff0c;数说安全正式发布《2024年中国网络安全市场全景图》&#xff08;以下简称全景图&#xff09;&#xff0c;棱镜七彩凭借专业的技术优势和产品创新实力再次上榜开发安全-软件成分分析&#xff08;SCA&#xff09;领域。 据悉&#xff0c;本次全景图在各市…

如何通过KB知识库系统实现内部知识的管理

“Baklib 通过构建KB知识库系统实现内部知识的管理&#xff0c;构建 CMS 系统实现网站内容管理&#xff0c;构建 DAM 实现对原子化数字内容的管理。” Baklib 从多个维度和深度实现对数字内容的管理。 CMS 系统 CMS 系统(Content Management System 内容管理系统)是一种帮助用…

ESP32CAM物联网教学09

ESP32CAM物联网教学09 摄像头配上显示屏 小智给摄像头配上了一块液晶显示屏,ESP32Cam变得更加酷炫了,应用也更加广泛了。 TFT彩色显示屏从第一课的CameraWebServer开始,我们一直都是利用浏览器来查看显示摄像头的视频流,都需要借助这个网页提供的服务。 可以让ESP32Cam开…