PyTorch入门教学——TensorBoard使用

news2024/11/18 17:51:45

1、TensorBoard简介

  • TensorBoard是Google开发的一个机器学习可视化工具。其主要用于记录机器学习过程,例如:
    • 记录损失变化、准确率变化
    • 记录图片变化、语音变化、文本变化等。例如在做GAN时,可以过一段时间记录一张生成的图片
    • 绘制模型

2、TensorBoard安装

  • 打开Anaconda Prompt,进入pytorch虚拟环境(conda activate pytorch),输入下面命令进行安装。
    • pip install tensorboard -i https://pypi.tuna.tsinghua.edu.cn/simple
      

3、SummaryWriter类的使用

  • SummaryWriter类提供了一个高级 API,用于在给定目录中创建事件文件,并向其中添加摘要和事件。然后再使用TensorBoard将事件可视化。
  • from torch.utils.tensorboard import SummaryWriter
  • 在pytorch项目文件夹下新建一个python文件。如果没有创建项目,参考:PyTorch入门教学——使用PyCharm创建一个PyTorch项目-CSDN博客
  •  在PyCharm中,按住Ctrl点击SummaryWriter,可以查看它的使用方法。
  • 主要利用到其中的两个方法,add_scalar()和add_image()

3.1、add_scalar()的使用

  • add_scalar()目的是添加一个标量数据(scalar data)到summary中,主要用来绘制图表。
  • 重点是前三个参数:
    • tag:要求是一个string,用以描述该标量数据图的标题。
    • scalar_value :可以简单理解为一个y轴值的列表。
    • global_step:可以简单理解为一个x轴值的列表,与y轴的值相对应。
  • 代码案例——绘制y=x和y=2x的图像。
    • 在test_tb.py中输入如下命令,并运行。
      • from torch.utils.tensorboard import SummaryWriter
        writer = SummaryWriter("logs")  # #第一个参数指明writer把summary内容写在哪个目录下
        # y = x
        for i in range(100):
            writer.add_scalar("y=x", i, i)  # 添加数据
            #  参数:图表名称,y轴,x轴
        # y = 2x
        for i in range(100):
            writer.add_scalar("y=x", 2 * i, i)  # 添加数据
        writer.close()
      • 运行后,在该项目文件夹中可获得logs文件,其中包含tensorboard的一些事件文件。
    • 使用TensorBoard可视化该事件文件。可以直接在PyCharm里的终端输入命令打开。
      • tensorboard --logdir=logs --port=6007
      • 点击链接即可打开,显示出绘制的图像。
      • 【注】由于每次运行一次,都会在logs文件夹中产生一个新的事件文件,为了防止冗余导致图像出错,简单的做法就是把这些文件都删除再重新运行一下。

3.2、add_image()的使用

  • add_image()是一个向summary中添加图片的函数,常用来观察训练结果。
  • 重点是前两个参数:
    • tag:要求是一个string,用以描述该图像可视化的标题。
    • img_tensor:传入的是要展示的图片内容,格式必须要转换为 : torch.Tensor,Numpy.array,string。
    • 【注】如果将图片调整为Numpy.array格式,需要在向add_image()函数中传入一个为了对应Numpy.array()数据类型而明确的dataformats参数,目的是指明array的内容。
  • 代码案例——可视化一张图片。
    • 首先存放一张图片到项目中。
    • 在test_tb.py中输入如下命令,并运行。(先清空原logs文件中的事件文件)
    • from torch.utils.tensorboard import SummaryWriter
      from PIL import Image
      import numpy as np
      
      img_path = "images/热巴.jpg"  # 图片相对地址
      img = Image.open(img_path)
      img.show()
      print(type(img))
      # add_image()的第2个参数要求的格式是torch.Tensor ; numpy.array ; string
      # 转换成numpy.array格式
      img = np.array(img)
      print(type(img))
      
      writer = SummaryWriter("logs")
      # 从PIL利用numpy转换到numpy.array格式,需要在add_image()函数的参数中,利用dataformats明确指定出shape中的每一个维度都表示的啥含义(三维的是'HWC')
      writer.add_image("热巴", img, 1, dataformats='HWC')
      
      writer.close()
    • 使用TensorBoard可视化该事件文件。可以直接在PyCharm里的终端输入命令打开。
      • tensorboard --logdir=logs --port=6007
      • 点击链接即可打开。
    • add_image()也可以在同一个标题下添加多张图片,但需要设置展示顺序。修改代码,删除logs中的事件文件,重新运行。
      • from torch.utils.tensorboard import SummaryWriter
        from PIL import Image
        import numpy as np
        
        writer = SummaryWriter("logs")
        
        img_path = "images/热巴1.jpg"  # 图片相对地址
        img = Image.open(img_path)
        img = np.array(img)
        writer.add_image("热巴", img, 1, dataformats='HWC')  # global_step = 1 表明:在tag中,第一张图片是img=热巴1.jpg
        
        img_path = "images/热巴2.jpg"  # 图片相对地址
        img = Image.open(img_path)
        img = np.array(img)
        writer.add_image("热巴", img, 2, dataformats='HWC')  # global_step = 1 表明:在tag中,第一张图片是img=热巴1.jpg
        
        writer.close()
      • 刷新网站,点击下列按钮即可切换图片。
      •  

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

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

相关文章

数字秒表VHDL启动暂停清零,源码和视频

名称:数字秒表VHDL启动暂停清零(代码在文末付费下载) 软件:Quartus 语言:VHDL 代码功能: 数字秒表 使用VHDL语言设置数字秒表。要求具有百分秒、秒和分钟显示,百分秒范围00-99,秒范围00-59,分钟范围0…

《java 桌面软件开发》swing 以鼠标为中心放大缩小移动图片

swing 使用Graphic2D 绘制图片,要实现对图片进行缩放和自由拖动。 1.以鼠标所在的位置为中心,滚轮控制缩放 2.缩放后再支持鼠标拖动。 基本原理: 利用scale() 函数。进行缩放。但是要注意的地方是,如果是在 public void paintCom…

Linux 下安装配置部署MySql8.0

一 . 准备工作 MySQL安装包:在官网下载需要的版本,这里我用的版本是 MySQL 8.0.34 https://dev.mysql.com/downloads/mysql/ 本次linux机器使用的是阿里云ECS实例 二 . 开始部署 1. 将安装包上传至服务器 解压到当前文件夹 tar -zxvf mysql-8.0.34…

Python 实现http server接收mutipart/form-data文件 方法1

Python 实现http server接收mutipart/form-data文件 方法1 1 Server端代码2 客户端截图3 代码说明 1 Server端代码 import os from flask import Flask, request from werkzeug.utils import secure_filenameapp Flask(__name__) app.config[UPLOAD_FOLDER] E://recv//app.ro…

玩游戏缺失“d3d11.dll丢失“的问题的五种解决方案

在我日常的计算机维护工作中,经常遇到一些用户报告他们遇到了"d3d11.dll丢失"的问题。这是一个常见的Windows系统错误,通常会导致程序无法正常运行。在这篇文章中,我将分享我找到的五种有效的解决方法,以帮助这些用户解…

开源的容器运行时项目 Podman

本心、输入输出、结果 文章目录 开源的容器运行时项目 Podman前言Podman 简介Podman 与 Docker 的区别Podman 在使用上和 Docker 有什么区别从构建者角度分析 Podman 在使用上和 Docker 有什么区别从使用者角度分析 Podman 在使用上和 Docker 有什么区别 Podman 常用命令容器镜…

Linux shell编程学习笔记14:编写和运行第一个shell脚本hello world!

* 20231020 写这篇博文断断续续花了好几天,为了说明不同shell在执行同一脚本文件时的差别,我分别在csdn提供线上Linux环境 (使用的shell是zsh)和自己的电脑上(使用的shell是bash)做测试。功夫不负有心人&am…

详解如何利用Pytest Cache Fixture实现测试结果缓存

这篇文章主要为大家详细介绍了如何利用Pytest Cache Fixture实现测试结果缓存,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起了解一下− 前言 接口自动关过程中,经常会遇到这样一些场景,“请求2需要用到请求1响应的数据”,常见的…

人脸识别顶会论文及源码合集,含2023最新

今天和大家聊聊人脸识别。 人脸识别的技术经过不断发展已经相当成熟,在门禁、监控、手机解锁、移动支付等实际场景都能看到。我们比较熟悉的识别方式是基于可见光图像的人脸识别,这种方式有个非常明显的缺点:光线限制。 在近两年的人脸识别…

如何解决NSIS 2G文件的限制

Internal compiler error #12345: error mmapping datablock to 33556079.Note: you may have one or two (large) stale temporary file(s) left in your temporary directory (Generally this only happens on Windows 9x). 最近在使用NSIS打包一个7.3GB的可执行程序时&…

【算法|动态规划No.25】leetcode LCR 020. 回文子串

个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【手撕算法系列专栏】【LeetCode】 🍔本专栏旨在提高自己算法能力的同时,记录一下自己的学习过程,希望…

Spring学习笔记注解式开发(3)

Spring学习笔记(3) 一、Bean的注解式开发1.1、注解开发的基本和Component1.2 注解式开发8.3、Component的三个衍生注解 二、Bean依赖注入注解开发2.1、依赖注入相关注解2.2、Autowired扩展 三、非自定义Bean注解开发四、Bean配置类的注解开发五、Spring注…

编译安装Nginx+GeoIP2自动更新+防盗链+防爬虫+限制访问速度+限制连接数

此文章是Nginx的GeoIP2模块和MaxMind国家IP库相互结合,达到客户端IP访问的一个数据记录以及分析,同时还针对一些业务需求做出对Nginx中间件的控制,如:防盗链、防爬虫、限制访问速度、限制连接数等 该篇文章是从一个热爱搞技术的博…

TSINGSEE智慧加油站可视化监管与风险预警方案

一、方案背景 加油站属于危化品行业,如何在日常加油卸油作业过程中保障人员、财产安全是重中之重。国内加油站日常管理主要依靠人为管控、监控摄像头监督及人工巡检等方式,管控手段存在低效性和滞后性,迫切需要将人工智能、物联网、大数据等…

07-React-redux和redux的使用

07.react-redux和redux的使用 1.redux的使用 1).redux的理解 a.redux是什么 redux是一个专门用于做状态管理的JS库(不是react插件库)。它可以用在react, angular, vue等项目中, 但基本与react配合使用。作用: 集中式管理react应用中多个组件共享的状态。 b.什么情况下需要使…

时间序列预测 | LightTS轻量采样的MLP结构网络用于多变量时间序列预测

首先,假设输入的时序维度为[B, T, N],作者便做了2种采样: 连续采样:侧重于捕获短期局部模式。 间隔采样:侧重于捕获长期依赖性。 如下图所示,很好理解,新的数据维度为[B, C, T/C, N],N代表时序的数量。 注意:论文上IEBlockC是直接出预测结果,但代码上,如上图红色标注…

【练习题】一.线性表

1.将两个递增的有序链表合并为一个递增的有序链表。要求结果链表仍使用原来两个链表《存储空间,不另外占用其他的存储空间。表中不允许有重复的数据。 2.将两个非递减的有序链表合并为一个非递增的有序链表。要求结果链表仍使用原来两个表的存储空间,不另外占用其他的存储空间…

计算机缺失d3dcompiler_47.dll解决方案,如何修复电脑缺失d3d文件

在计算机系统中,DLL文件(动态链接库)是一种重要的共享库,它包含了可被多个程序使用的代码和数据。然而,当某些DLL文件丢失或损坏时,可能会导致程序无法正常运行。本文将介绍四种解决D3DCompiler_47.dll缺失…

Adobe Audition 2024: 音频处理的未来,今天就在您的指尖

随着科技的飞速发展和人们对音频质量要求的不断提高,Adobe Audition 2024 (Au2024) 已经成为音频处理领域的领军者。这款强大的软件将为您的音频带来革命性的改变,让您的创作如虎添翼。 在Adobe Audition 2024中,用户可以体验到全新的界面设…

业内专业人士揭秘:双11即将来临,挑选SSD硬盘避坑指南

再过几天,各大电商的双11狂欢季。同时,随着存储产品涨价潮也在磨刀霍霍,这个双11可能是未来1年最合适买硬盘的窗口期。 小编从购物网站的价格趋势变化来看,已经有厂商按耐不住开始涨价了,NAND原厂的SSD价格相对较平稳。…