在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.mzph.cn/web/42099.shtml

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

相关文章

如何将资源前端通过 Docker 部署到远程服务器

作为一个程序员&#xff0c;在开发过程中&#xff0c;经常会遇到项目部署的问题&#xff0c;在现在本就不稳定的大环境下&#xff0c;前端开发也需要掌握部署技能&#xff0c;来提高自己的生存力&#xff0c;今天就详细说一下如何把一个前端资源放到远程服务器上面通过docker部…

【Python】不小心卸载pip后(手动安装pip的两种方式)

文章目录 方法一&#xff1a;使用get-pip.py脚本方法二&#xff1a;使用easy_install注意事项 不小心卸载pip后&#xff1a;手动安装pip的两种方式 在使用Python进行开发时&#xff0c;pip作为Python的包管理工具&#xff0c;是我们安装和管理Python库的重要工具。然而&#x…

产品经理技能揭秘:如何巧妙启发需求,引领市场新潮流

文章目录 引言一、需求启发的定义二、需求启发的艺术三、需求启发的重要性四、需求启发的流程五、需求启发的问题与挑战内部自身的问题与挑战&#xff1a;挑战一&#xff1a;知识的诅咒挑战二&#xff1a;做与定义的不同挑战三&#xff1a;沟通障碍挑战四&#xff1a;需求变更频…

solidity:构造函数和修饰器、事件

构造函数​ 构造函数&#xff08;constructor&#xff09;是一种特殊的函数&#xff0c;每个合约可以定义一个&#xff0c;并在部署合约的时候自动运行一次。它可以用来初始化合约的一些参数&#xff0c;例如初始化合约的owner地址&#xff1a; address owner; // 定义owner变…

电脑找回彻底删除文件?四个实测效果的方法【一键找回】

电脑数据删除了还能恢复吗&#xff1f;可以的&#xff0c;只要我们及时撤销上一步删除操作&#xff0c;还是有几率找回彻底删除文件。 当我们的电脑文件被彻底删除后&#xff0c;尽管恢复的成功率可能受到多种因素的影响&#xff0c;但仍有几种方法可以尝试找回这些文件。本文整…

使用 docker buildx 构建跨平台镜像

buildx是Docker官方提供的一个构建工具&#xff0c;它可以帮助用户快速、高效地构建Docker镜像&#xff0c;并支持多种平台的构建。使用buildx&#xff0c;用户可以在单个命令中构建多种架构的镜像&#xff0c;例如x86和arm架构&#xff0c;而无需手工操作多个构建命令。此外bu…

【React Hooks原理 - useCallback、useMemo】

介绍 在实际项目中&#xff0c;useCallback、useMemo这两个Hooks想必会很常见&#xff0c;可能我们会处于性能考虑避免组件重复刷新而使用类似useCallback、useMemo来进行缓存。接下来我们会从源码和使用的角度来聊聊这两个hooks。【源码地址】 为什么要有这两个Hooks 在开始…

使用selenium定位input标签下的下拉框

先来看一下页面效果&#xff1a;是一个可输入的下拉列表 再来看一下下拉框的实现方式&#xff1a; 是用<ul>和<li>方式来实现的下拉框&#xff0c;不是select类型的&#xff0c;所以不能用传统的select定位方法。 在着手定位元素前一定一定要先弄清楚下拉列表…

前后端的学习框架

前后端的学习框架 视频链接&#xff1a;零基础AI全栈开发系列教程&#xff08;一&#xff09;_哔哩哔哩_bilibili

汇凯金业:数字货币对经济的影响有哪些

随着信息技术的飞速发展&#xff0c;数字货币作为一种新兴的货币形态&#xff0c;正逐步走进人们的视野&#xff0c;并对传统经济体系产生着深远影响。它不仅革新了交易方式&#xff0c;更在重塑金融格局、赋能经济发展等方面展现出巨大潜力。 一、交易效率的“加速器” 数字…

xxl-job集成SpringBoot

安装xxl-job客户端一般有很多方式&#xff0c;我这里给大家提供两种安装方式&#xff0c;包含里面的各项配置等等。 前期需要准备好MySQL数据库。复制SQL到数据库里面。 # # XXL-JOB v2.4.2-SNAPSHOT # Copyright (c) 2015-present, xuxueli.CREATE database if NOT EXISTS x…

项目机会:4万平:智能仓,AGV,穿梭车,AMR,WMS,提升机,机器人……

导语 大家好&#xff0c;我是社长&#xff0c;老K。专注分享智能制造和智能仓储物流等内容。 如下为近期国内智能仓储物流相关项目的公开信息线索&#xff0c;这些项目具体信息会发布到知识星球&#xff0c;请感兴趣的球友先人一步到知识星球【智能仓储物流技术研习社】自行下载…

《SoC设计方法与实现》:全面掌握系统芯片设计精髓(可下载)

SoC&#xff08;System on Chip&#xff0c;系统级芯片&#xff09;设计是一项复杂而精细的工程活动&#xff0c;它涉及到将一个完整的电子系统的所有组件集成到一个单一的芯片上&#xff0c;包括处理器核心、内存、输入/输出端口以及可能的其他功能模块。这种集成不仅要求设计…

oracle存储结构-----逻辑存储结构(表空间、段、区、块)

文章目录 oracle存储结构图&#xff08;逻辑存储物理存储&#xff09;oracle逻辑存储结构图逻辑存储结构、表空间、段、区、数据块的关系&#xff1a;1、数据 块&#xff08;block&#xff09;---逻辑存储最小单位2、 数据区&#xff08;extent&#xff09;--存储空间分配和回收…

【AutoencoderKL】基于stable-diffusion-v1.4的vae对图像重构

模型地址&#xff1a;https://huggingface.co/CompVis/stable-diffusion-v1-4/tree/main/vae 主要参考:Using-Stable-Diffusion-VAE-to-encode-satellite-images sd1.4 vae 下载到本地 from diffusers import AutoencoderKL from PIL import Image import torch import to…

电脑经常黑屏

情况简述&#xff1a; 电脑经常突然黑屏&#xff0c;并且鼠标还能看到并且可操控 你是不是试过以下方法&#xff1a; 更换显卡驱动版本❌重置BIOS❌重装系统❌全网找千篇一律没啥用的教程❌ 这个标志熟悉吧&#xff0c;看看你的电脑里是否安装了火绒&#xff0c;如果装了继续…

Linux运维:mysql主从复制原理及实验

当一台数据库服务器出现负载的情况下&#xff0c;需要扩展服务器服务器性能扩展方式有向上扩展&#xff0c;垂直扩展。向外扩展&#xff0c;横向扩展。通俗的讲垂直扩展是将一台服务器扩展为性能更强的服务器。横向扩展是增加几台服务器。 主从复制好比存了1000块钱在主上&…

Android14之获取包名/类名/服务名(二百二十三)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

深度学习-梯度下降算法-NLP(五)

梯度下降算法 深度学习中梯度下降算法简介找极小值问题数学上求最小值梯度梯度下降算法 找极小值问题在深度学习流程中深度学习整体流程图求解损失函数的目标权重的更新 深度学习中梯度下降算法简介 找极小值问题 引子&#xff1a; 我们训练一个人工智能模型&#xff0c;简单…

磁致伸缩液位计原理和特点

工作原理 磁致伸缩液位计的工作原理基于磁性材料在外部磁场作用下的尺寸变化来进行液位测量。该液位计主要由电子变送器、浮球&#xff08;浮子&#xff09;、探测杆&#xff08;测杆&#xff09;三部分组成。在磁致伸缩液位计的传感器测杆外配有一浮子&#xff0c;此浮子可以…