在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可视化训练过程

😃😃😃

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【ROS2】Ubuntu 24.04 源码编译安装 Jazzy Jalisco

目录 系统要求 系统设置 设置区域启用所需的存储库安装开发工具 构建 ROS 2 获取 ROS 2 代码使用 rosdep 安装依赖项安装额外的 RMW 实现&#xff08;可选&#xff09;在工作区构建代码 设置环境 尝试一些例子 下一步 备用编译器 Clang保持最新状态 故障排除 卸载 系统要求 当前…

软件测试下的AI之路(5)

😏作者简介:博主是一位测试管理者,同时也是一名对外企业兼职讲师。 📡主页地址:【Austin_zhai】 🙆目的与景愿:旨在于能帮助更多的测试行业人员提升软硬技能,分享行业相关最新信息。 💎声明:博主日常工作较为繁忙,文章会不定期更新,各类行业或职场问题欢迎大家…

智能遥测终端机RTU-精确监控 智能运维

智能遥测终端机RTU是物联网领域中一种重要的设备&#xff0c;它的出现无疑为远程监控和数据采集提供了强大的支持。计讯物联智能遥测终端机RTU具备数据采集、处理、通信和控制功能的设备&#xff0c;可以实现对远程设备的监控与控制。它在物联网系统中扮演着桥梁的角色&#xf…

前端程序员如何转大模型?收藏这一篇就够了(非常详细)

最近各行各业都不容易啊&#xff0c;那个中金女员工跳楼事件频繁上热点&#xff0c;引起广泛的关注&#xff0c;本质上还是经济下行&#xff0c;我们互联网行业也是如此&#xff0c;特别是程序员&#xff0c;本来就有35岁危机&#xff0c;加上行业不景气&#xff0c;大厂都在裁…

MacOS和Windows中怎么安装Redis

希望文章能给到你启发和灵感&#xff5e; 如果觉得文章对你有帮助的话&#xff0c;点赞 关注 收藏 支持一下博主吧&#xff5e; 阅读指南 开篇说明一、基础环境说明1.1 硬件环境1.2 软件环境 二、MacOS中Redis的安装2.1 HomeBrew 安装&#xff08;推荐&#xff09;2.2 通过官方…

人类连接组项目(HCP)的纤维束测量:资源和见解

摘要 人类连接组项目(HCP)已成为人类神经科学研究的基石&#xff0c;在推进脑成像方法和了解人脑方面具有重要作用。本研究专注于对HCP的扩散加权磁共振成像(dMRI)数据进行纤维示踪分析。使用了一个开源软件库(pyAFQ&#xff1b;https://yeatmanlab.github.io/pyAFQ)进行概率纤…

摸鱼大数据——Spark SQL——DataFrame详解二

3.DataFrame的相关API 操作DataFrame一般有二种操作方案&#xff1a;一种为【DSL方式】&#xff0c;另一种为【SQL方式】 SQL方式: 通过编写SQL语句完成统计分析操作DSL方式: 特定领域语言&#xff0c;使用DataFrame特有的API完成计算操作&#xff0c;也就是代码形式​从使用角…

分类下两列一组统计

表格 A 列是分类&#xff0c;后面是 2N 个 key-value 列 ABCDEFG1CountryLabel1Count1Label2Count2Label3Count32USA10B9C83USD9C8A74USC8D7B65USA7C6B56CAA10B9C87CAD9C8A78CAC8D7B69INA10C9B810IND9A8B711INA8D7B6 需要对分类、key 分组&#xff0c;对 value 求和&#xff…

【Qt】Qt Creator初使用

目录 一. 创建新项目 二. 认识Qt Creator界面 2.1 main.cpp 代码解释 2.2 mywidget.h 代码解释 2.3 mywidget.cpp 代码解释 2.4 form file —— Forms里的mywidget.ui 2.5 .pro文件 2.6 编译生成的中间文件 Qt Creator是一个跨平台集成开发环境(IDE)&#xff0c;专门用…

10分钟使用网站构建框架hugo本地搭建个人网站并快速上线详细教程

文章目录 前言1. 安装环境2. 配置环境变量与hugo安装2.1 创建程序目录2.2 配置环境变量2.3 查看程序版本 3. 创建博客网站3.1 创建站点3.2 在站点中创建一篇文章3.3 为网站添加主题 4. 本地访问测试5. 安装内网穿透工具6. 配置公网地址7. 配置固定公网地址 前言 今天和大家分享…

量产工具一一UI系统(四)

前言 前面我们实现了显示系统框架&#xff0c;输入系统框架和文字系统框架&#xff0c;链接&#xff1a; 量产工具一一显示系统&#xff08;一&#xff09;-CSDN博客量产工具一一输入系统&#xff08;二&#xff09;-CSDN博客量产工具一一文字系统&#xff08;三&#xff09;…

前端面试题23(css3)

关于CSS3的面试题&#xff0c;我们可以从多个维度来探讨&#xff0c;包括但不限于选择器、盒模型、布局技术、动画与过渡、响应式设计等。下面我会列举一些典型的CSS3面试问题&#xff0c;并尽可能提供详细的解答或示例代码。 1. CSS3中新增了哪些选择器&#xff1f; 答案: C…

医院、体育场、学校或工厂等的同步时钟系统有什么区别?

在现代社会中&#xff0c;同步时钟系统在医院、体育场、学校和工厂等场所发挥着至关重要的作用。尽管它们的基本功能都是提供准确统一的时间&#xff0c;但由于各场所的性质和需求不同&#xff0c;其同步时钟系统在诸多方面存在显著区别。 一、医院同步时钟系统 医院作为救死扶…

selenium处理cookie问题实战

1. cookie获取不完整 需要进入的资损平台(web)首页&#xff0c;才会出现有效的ctoken等信息 1.1. 原因说明 未进入指定页面而获取的 cookie 与进入页面后获取的 cookie 可能会有一些差异&#xff0c;这取决于网站的具体实现和 cookie 的设置方式。 通常情况下&#xff0c;一些…

镜舟科技:国产数据库角逐金融赛道,开年斩获数家银行订单

在国产数据库领域&#xff0c;镜舟科技正迅速崛起&#xff0c;成为一匹瞩目的基础数据技术黑马。 开年伊始&#xff0c;镜舟科技便成功斩获中信银行、南京银行、某股份制银行、某头部民营银行、某大型综合类券商以及某消费金融公司等多家金融企业订单&#xff0c;其锚定需求匹…

C++ | Leetcode C++题解之第216题组合总和III

题目&#xff1a; 题解&#xff1a; class Solution { private:vector<vector<int>> res;void backtracking(int k, int n, vector<int> ans){if(k 0 || n < 0){if(k 0 && n 0){res.emplace_back(ans);}return;}int start (ans.size() 0 ?…

30万的剧本杀店 被“好色”店长玩死了

文&#xff5c;琥珀食酒社 作者 | 朱珀 对开店搞钱的人来讲 什么才是最苦逼的&#xff1f; 不是一开始生意就不行 而是刚开始好到不行 最后只剩下不行 本期投稿的主人公糊糊 就是这样的 苦逼大BOSS 30万开剧本杀店 短短几个月 从巅峰跌到谷底 被捞钱又好色的猪队友…

代码随想录算法训练营第67天:图论5[1]

代码随想录算法训练营第67天&#xff1a;图论5 ‍ 105.有向图的完全可达性 卡码网题目链接&#xff08;ACM模式&#xff09;(opens new window) 【题目描述】 给定一个有向图&#xff0c;包含 N 个节点&#xff0c;节点编号分别为 1&#xff0c;2&#xff0c;…&#xff0…

ICC2:ignore pin的设置

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 相关文章链接:

项目:简易Mybatis

目录 一、新建项目 二、新建模块 三、回顾JDBC 四、准备环境 五、使用dom4j解析xml文件 六、开始,编写Mapper解析API 1、自定义Resources类 2、定义Configuration类 3、定义MappedStatement类 4、定义XmlMapperBuilder类 5、更新一下UserMapper.xml和UserMapper接口 …