Pytorch:Tensorboard简要学习

news2024/9/20 23:27:16

目录

  • 一、TensorBoard简介
  • 二、TensorBoard的安装与启动
    • Tensorboard的安装
    • Tensorboard的启动
  • 三、TensorBoard的简单使用
    • 3.1 SummaryWriter()
    • 3.2 add_scalar()和add_scalars()
    • 3.3 add_histogram()
    • 3.4 模型指标监控
  • 四、总结
  • 参考博客

一、TensorBoard简介

TensorBoard 是Google开发的一个机器学习可视化工具,其主要用于记录机器学习过程用于数据可视化的工具。它包含在流行的开源机器学习库Tensorflow 中。虽然Tensorboard是TensorFlow的一部分,但是可以独立安装,并且服务于Pytorch等其他的框架。Tensorboard的功能可以描述如下:

  • 记录损失变化、准确率变化等
  • 记录图片变化、语音变化、文本变化等
  • 绘制模型

Tensorboard具体能够支持哪些内容可以参考官方文档

Tensorboard界面

在这里插入图片描述

二、TensorBoard的安装与启动

Tensorboard的安装

由于TensorBoard 包含在 TensorFlow 库中,所以可以通过TensorFlow来使用Tensorboard。此外我们也可以单独安装 TensorBoard ,在Terminal使用如下命令(以Pycharm中的venv为例):

pip install Tensorboard

执行命令后,在Terminal使用如下命令以测试是否安装成功:

tensorboard --help

如果正常输出则说明安装成功。

Tensorboard的启动

(1)在 Jupyter Notebooks 中使用 TensorBoard

在Jupyter Notebooks 中使用 TensorBoard,可以使用以下命令:

%load_ext tensorboard

运行这行代码将加载 TensorBoard并允许可视化。加载扩展后,们现在可以启动 TensorBoard:

%tensorboard --logdir logs

运行结果:(如果是首次打开将不再是这个界面,这里是因为我原来就存了都东西在runs里)

在这里插入图片描述

(2)本地启动TensorBoard(以Pycharm的venv为例)

要在Pycharm中(这里我用的是venv)启动 TensorBoard,打开Terminal并运行:

tensorboard --logdir=<directory_name>

directory_name是保存数据的目录,默认是“logs”。

运行此命令后,我们将看到以下提示:

在这里插入图片描述

这说明 TensorBoard 已经成功上线。可以使用浏览器打开http://localhost:6006/查看或者直接点击链接查看。

三、TensorBoard的简单使用

下面以Pytorch使用Tensorboard为例来看看Tensorboard的简单使用:

使用的流程可以如下图所示:

在这里插入图片描述

首先在可以执行的.py文件中记录可视化数据(tensor、text等),然后讲这些可视化数据保存在硬盘之中(文件格式是Tensorboard可以读取的形式),然后通过终端连接上Tensorboard读取可视化数据,最后可以在Web端可视化结果。

这其中,Pytorch使用Tensorboard主要用到了三个API:

  • SummaryWriter:这个用来创建一个log文件,TensorBoard面板查看时,也是需要选择查看那个log文件。
  • add_something: 向log文件里面增添数据。例如通过add_scalar增添折线图数据,add_image可以增添图片。具体有哪些还得参考官方文档
  • close:当训练结束后,通过close方法结束写入。

下面对主要的调用做一个介绍:

3.1 SummaryWriter()

功能:提供创建event file的高级窗口

在这里插入图片描述

属性作用
log_dir指定输出文件夹
comment不指定log_dir时,文件夹后缀
filename_suffixevent file文件名后缀

即在不指定log_dir 时,runs文件夹的子文件夹名后缀为comment的参数。

测试代码

import numpy as np
import matplotlib.pyplot as plt
import torch
import random
from torch.utils.tensorboard import SummaryWriter

def set_seed(seed=1):
    random.seed(seed)
    np.random.seed(seed)
    torch.manual_seed(seed)
    torch.cuda.manual_seed(seed)
    
set_seed(1)  # 设置随机种子

# ----------------------------------- 0 SummaryWriter -----------------------------------


log_dir = "./train_log/test_log_dir" # 路径,"./"表示当前文件夹
# writer = SummaryWriter(log_dir=log_dir, comment='_scalars', filename_suffix="12345678")
writer = SummaryWriter(comment='_scalars', filename_suffix="12345678")

for x in range(100):
    writer.add_scalar('y=pow_2_x', 2 ** x, x)

writer.close()

3.2 add_scalar()和add_scalars()

add_scalar():

功能:记录标量

在这里插入图片描述

属性作用
tag图像的标签名,图的唯一标识
scalar_value要记录的标量,相当于y轴
global_step要记录的标量,相当于x轴

add_scalasr():

功能:记录多个标量
在这里插入图片描述

属性作用
tag图像的标签名,图的唯一标识
main_tag该图的标签
tag_scalar_dictkey是变量的tag,value是变量的值

测试代码

import numpy as np
import matplotlib.pyplot as plt
import torch
import random
from torch.utils.tensorboard import SummaryWriter

def set_seed(seed=1):
    random.seed(seed)
    np.random.seed(seed)
    torch.manual_seed(seed)
    torch.cuda.manual_seed(seed)
    
set_seed(1)  # 设置随机种子

# ----------------------------------- 1 scalar and scalars -----------------------------------
max_epoch = 100

writer = SummaryWriter(comment='test_comment', filename_suffix="test_suffix")

for x in range(max_epoch):

    writer.add_scalar('y=2x', x * 2, x)
    writer.add_scalar('y=pow_2_x', 2 ** x, x)

    writer.add_scalars('data/scalar_group', {"xsinx": x * np.sin(x),
                                             "xcosx": x * np.cos(x)}, x)

writer.close()

运行结果:

在这里插入图片描述

3.3 add_histogram()

功能
统计直方图与多分位数折线图

在这里插入图片描述

属性作用
tag图像的标签名,图的唯一标识
values要统计的参数
global_step:y轴
bins取直方图的bins

blog.csdnimg.cn/direct/7b0fc8f1b99e43008c39b0314fbf915c.png)

测试代码

import numpy as np
import matplotlib.pyplot as plt
import torch
import random
from torch.utils.tensorboard import SummaryWriter

def set_seed(seed=1):
    random.seed(seed)
    np.random.seed(seed)
    torch.manual_seed(seed)
    torch.cuda.manual_seed(seed)
    
set_seed(1)  # 设置随机种子

# ----------------------------------- 2 histogram ----------------------------------

writer = SummaryWriter(comment='test_comment', filename_suffix="test_suffix")

for x in range(2):

    np.random.seed(x)

    data_union = np.arange(100)
    data_normal = np.random.normal(size=1000)

    writer.add_histogram('distribution union', data_union, x)
    writer.add_histogram('distribution normal', data_normal, x)

    plt.subplot(121).hist(data_union, label="union")
    plt.subplot(122).hist(data_normal, label="normal")
    plt.legend()
    plt.show()

writer.close()

运行结果:

在这里插入图片描述

3.4 模型指标监控

此外,Tensorboard还可以实现对神经网络模型的相关参数的监控,仍然以人民币二分类模型为例,Tensorboard可视化结果如下:

在这里插入图片描述

在这里插入图片描述

四、总结

本文简要介绍了 TensorBoard,介绍了TensorBoard的安装和启动(当然并不能够应付全部情况)以及几个简单函数的使用,借助这些功能,可以能够查看和调试我们训练的模型的内部工作,并最终提高它们的性能。

参考博客

Pytorch教程
TensorBoard快速入门

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

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

相关文章

C#中的封装、继承和多态

1.引言 在面向对象的编程中&#xff0c;封装、继承和多态是三个重要的概念。它们是C#语言中的基本特性&#xff0c;用于设计和实现具有高内聚和低耦合的代码。本文将详细介绍C#中的封装、继承和多态的相关知识。 目录 1.引言2. 封装2.1 类2.2 访问修饰符 3. 继承4. 多态4.1 虚方…

36个校招网络原理面试题

1.如何理解 URI&#xff1f; URI, 全称为(Uniform Resource Identifier), 也就是统一资源标识符&#xff0c;它的作用很简单&#xff0c;就是区分互联网上不同的资源。但是&#xff0c;它并不是我们常说的网址, 网址指的是URL, 实际上URI包含了URN和URL两个部分&#xff0c;由…

如何从众多知识付费平台中正确选择属于自己的平台(明理信息科技知识付费平台)

在当今的知识付费市场中&#xff0c;用户面临的选择越来越多&#xff0c;如何从众多知识付费平台中正确选择属于自己的平台呢&#xff1f;下面&#xff0c;我们将为您介绍明理信息科技知识付费平台相比同行的优势&#xff0c;帮助您做出明智的选择。 一、创新的技术架构&#…

全套SpringBoot讲义01

hello&#xff0c;我是小索奇&#xff0c;全套SpringBoot教程~一起来学习叭 文章目录 SpringBoot文档更新日志前言课程内容说明课程前置知识说明 SpringBoot基础篇JC-1.快速上手SpringBootJC-1-1.SpringBoot入门程序制作&#xff08;一&#xff09;JC-1-2.SpringBoot入门程序制…

Qt之QNetworkAccessManager 从本地和内存中上传数据到Http服务器

简述 接连做了好几个服务器的项目&#xff0c;例如文件传输用的Ftp和对象存储服务器(Object Storage Service)&#xff0c;简单的信息传输用的WebServer&#xff0c;之前也有用过HttpServer不过都和WebServer一样简单的调用接口提交数据并没有上传过文件&#xff0c;正好趁这次…

人工智能导论习题集(2)

第三章&#xff1a;确定性推理 题1题2题3题4题5题6题7 题1 题2 题3 题4 题5 题6 题7

设计模式之结构型设计模式(二):工厂模式 抽象工厂模式 建造者模式

工厂模式 Factory 1、什么是工厂模式 工厂模式旨在提供一种统一的接口来创建对象&#xff0c;而将具体的对象实例化的过程延迟到子类或者具体实现中。有助于降低客户端代码与被创建对象之间的耦合度&#xff0c;提高代码的灵活性和可维护性。 定义了一个创建对象的接口&…

spring 笔记九 Spring AOP

Spring 的 AOP 简介 什么是AOP AOP 为Aspect Oriented Programming 的缩写&#xff0c;意思为面向切面编程&#xff0c;是通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。 AOP 是OOP 的延续&#xff0c;是软件开发中的一个热点&#xff0c;也是Spring框架…

【Spark精讲】Spark存储原理

目录 类比HDFS的存储架构 Spark的存储架构 存储级别 RDD的持久化机制 RDD缓存的过程 Block淘汰和落盘 类比HDFS的存储架构 HDFS集群有两类节点以管理节点-工作节点模式运行&#xff0c;即一个NameNode(管理节点)和多个DataNode(工作节点)。 Namenode管理文件系统的命名空…

BKP 备份寄存器 RTC 实时时钟-stm32入门

这一章节我们要讲的主要内容是 RTC 实时时钟&#xff0c;对应手册&#xff0c;是第 16 章的位置。 实时时钟这个东西&#xff0c;本质上是一个定时器&#xff0c;但是这个定时器&#xff0c;是专门用来产生年月日时分秒&#xff0c;这种日期和时间信息的。所以学会了 STM32 的…

Java系列-ConcurrentHashMap-addCount

1.addCount public class ConcurrentHashMap<K,V> extends AbstractMap<K,V>implements ConcurrentMap<K,V>, Serializable {private final void addCount(long x, int check) {CounterCell[] as; long b, s;//1.counterCells不为null//2.或者 x加到baseCou…

挑战52天学小猪佩奇笔记--day24

52天学完小猪佩奇--day24 ​【本文说明】 本文内容来源于对B站UP 脑洞部长 的系列视频 挑战52天背完小猪佩奇----day24 的视频内容总结&#xff0c;方便复习。强烈建议大家去关注一波UP&#xff0c;配合UP视频学习。 注&#xff1a;这集开始变成一段一段的猜台词&#xff0c;加…

网站提示“不安全”

当你在浏览网站时&#xff0c;有时可能会遇到浏览器提示网站不安全的情况。这通常是由于网站缺乏SSL证书所致。那么&#xff0c;从SSL证书的角度出发&#xff0c;我们应该如何解决这个问题呢&#xff1f; 首先&#xff0c;让我们简单了解一下SSL证书。SSL证书是一种用于保护网站…

pybind11:对比C++和Python解线性方程组的速度

前言 上篇博客介绍了如何在用pybind11实现ndarray和C数组的转换自由&#xff0c;pybind11&#xff1a;实现ndarray转C原生数组&#xff08;没看过的朋友可以去看一看&#xff09;下面我们以一个实际的算法例子演示一下如何使用这个技术&#xff0c;方便的实现 Python 调用 C 写…

Java架构师系统架构高可用维度分析

目录 1 导语2 可用性介绍3 本地高可用-集群、分布式4 本地高可用-数据逻辑保护5 异地容灾-双活、两地三中心6 异地容灾-DRP规划&BCP业务连续性7 多活和妥协方案8 高可用流程9 总结想学习架构师构建流程请跳转:Java架构师系统架构设计 1 导语 Java架构师在进行系统架构设…

蓝桥杯专题-真题版含答案-【排序法 - 改良的选择排序】【插补搜寻法】【稀疏矩阵】【欧拉与鸡蛋】

Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列ChatGPT和AIGC &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分…

【golang/g3n】3D游戏引擎G3N的windows安装与测试

目录 说在前面安装测试 说在前面 操作系统&#xff1a;win 11go version&#xff1a;go1.21.5 windows/amd64g3n版本&#xff1a;github.com/g3n/engine v0.2.0其他&#xff1a;找了下golang 3d相关的库&#xff0c;目前好像就这个比较活跃 安装 按照官方教程所说&#xff0c;…

ES6 面试题 | 13.精选 ES6 面试题

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

IDEA中alt enter不显示创建实现类快捷键

alt enter不显示创建实现类快捷键是因为idea中的设置没打开&#xff0c;按照一下设置打开就可以了。 点击setting-->>editor-->>intentions-->>java下的declaration 如下图所示&#xff1a;

PXI/PCIe/VPX机箱 ARM|x86 + FPGA测试测量板卡解决方案

PXI便携式测控系统是一种基于PXI总线的便携式测试测控系统&#xff0c;它填补了现有台式及机架式仪器在外场测控和便携测控应用上的空白&#xff0c;在军工国防、航空航天、兵器电子、船舶舰载等各个领域的外场测控场合和科学试验研究场合都有广泛的应用。由于PXI便携式测控系统…