当前位置: 首页 > news >正文

PyTorch入门教学——TensorBoard使用

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 npimg_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 npwriter = 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.jpgimg_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.jpgwriter.close()
      • 刷新网站,点击下列按钮即可切换图片。
      •  

相关文章:

PyTorch入门教学——TensorBoard使用

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

03 里氏替换原则

官方定义: 里氏替换原则(Liskov Substitution Principle,LSP)是由麻省理工学院计算机科学系教授芭芭拉利斯科夫于 1987 年在“面向对象技术的高峰会议”(OOPSLA)上发表的一篇论文《数据抽象和层次》&#…...

【微信小程序】无纸化会议OA系统之首页搭建

前言 中国政府意识到信息技术的重要性,并开始积极推动信息产业的发展。一系列政策和措施被制定和执行,以促进信息技术的采用和普及,从而推动数字化时代的到来。为了响应国家推行的数字化时代,本篇文章以会议OA系统为背景进行编写…...

小程序:uniapp解决主包体积过大的问题

已经分包但还是体积过大 运行时勾选“运行时是否压缩代码”进行压缩 在manifest.json配置(开启分包优化) "mp-weixin" : {"optimization" : {"subPackages" : true}//.... },在app.json配置(设置组件按需注入…...

[opencv]图像和特征点旋转

本来说这是很简单的一个内容,图像旋转只需要使用opencv中自带的旋转函数即可完成,但是最近在做特征点旋转的时候发现使用内置rotate函数给图像旋转90度,再用getRotationMatrix2D得出的旋转矩阵对特征点旋转,画出来的特征点位置全部…...

世界粮食日:宏工科技有对策,赋能食品生产高效可持续发展

10月16日是世界粮食日。随着全球人口的增长,人们对高品质食品的需求也越来越大,如何实现“更好生产、更好营养”成为了食品生产与供应的重要话题。15年来,宏工科技专注物料处理自动化领域,提供食品物料处理一站式解决方案以提高生…...

FutureTask配合Thread实现处理有返回结果的源码、逻辑与架构分析

文章目录 1.介绍2.使用示例3.执行过程描述4.整体的关系5.涉及到的核心源码(只提取了关键代码)5.1 Callable5.2 RunnableFuture5.3 FutureTask5.4 Thread 1.介绍 FutureTask 能够接收 Callable 类型的参数,用来处理有返回结果的情况。 2.使用…...

Queue Deque 介绍

目录 一. 前言 二. Queue 接口 三. Deque 接口 一. 前言 Java里有一个叫做Stack的类,却没有叫做Queue的类(它是个接口名字)。当需要使用栈时,Java已不推荐使用Stack,而是推荐使用更高效的ArrayDeque;既然…...

机器学习(23)---Boosting tree(课堂笔记)

文章目录 一、知识记录二、题目2.1 题目12.2 题目22.3 答案书写 一、知识记录 二、题目 2.1 题目1 2.2 题目2 2.3 答案书写...

Excel 导出打不开

$filename iconv("UTF-8", "GB2312//IGNORE", 志愿者列表) . - . date(YmdHis) . .xlsx; header(Content-Type: application/vnd.ms-excel); header(Content-Disposition: attachment;filename".$filename."); header(Cache-Control: max-age0)…...

css钟表数字样式

如图: 代码 font-size: 28px;font-family: Yourname;font-weight: 500;color: #00e8ff;...

一步一步分析ChatGPT,1 粘性,2 传染性, 3 双边网络效应

请按照以下三个维度一步一步分析ChatGPT,1 粘性,2 传染性, 3 双边网络效应,比如亚马逊的买家和商家的关系 ChatGPT的分析 1.1. 粘性 (Stickiness) 定义: 粘性是指产品或服务对用户的吸引力,即用户在使用…...

Arthas(阿尔萨斯):阿里巴巴开源的线上问题诊断工具

背景 通常,本地开发环境无法访问生产环境。如果在生产环境中遇到问题,则无法使用 IDE 远程调试。更糟糕的是,在生产环境中调试是不可接受的,因为它会暂停所有线程,导致服务暂停。 开发人员可以尝试在测试环境或者预发环境中复现生产环境中的问题。但是,某些问题无法在不同…...

由Django-Session配置引发的反序列化安全问题

漏洞成因 漏洞成因位于目标配置文件settings.py下 关于这两个配置项 SESSION_ENGINE: 在Django中,SESSION_ENGINE 是一个设置项,用于指定用于存储和处理会话(session)数据的引擎。 SESSION_ENGINE 设置项允许您选择不…...

16-spring AOP核心对象的创建

文章目录 1. aop的几个重要概念2. aop bean definition3. AspectJPointcutAdvisor4.AopConfigUtils5.AnnotationAwareAspectJAutoProxyCreator6. 循环依赖1. aop的几个重要概念 参考官方解释:https://docs.spring.io/spring-framework/docs/5.2.9.RELEASE/spring-framework-r…...

Golang 泛型的介绍

引言 Golang是一种现代的编程语言,以其简洁的语法和高效的性能而闻名。然而,与其他一些编程语言相比,Golang在语言层面上缺乏泛型的支持,这使得在处理不同类型的数据时变得有些困难。在本文中,我们将介绍Golang泛型的…...

RK3568笔记四:基于TensorFlow花卉图像分类部署

若该文为原创文章,转载请注明原文出处。 基于正点原子的ATK-DLRK3568部署测试。 花卉图像分类任务,使用使用 tf.keras.Sequential 模型,简单构建模型,然后转换成 RKNN 模型部署到ATK-DLRK3568板子上。 在 PC 使用 Windows 系统…...

甄知科技张礼军:数智化转型助企业破茧成蝶!

数智化浪潮滚滚向前,正席卷各行各业,带领企业从数字化时代跨入数智化时代。可什么是数智化?如何实现数智化转型?已经成为横亘在无数企业面前的大难题! 事实上,数智化是数字化、AI和业务三个要素的交集&…...

Golang Map:高效的键值对容器

1. 引言 在编程中,我们经常需要使用键-值对来存储和操作数据。Golang中提供了一种高效的键值对容器——Map(映射),它提供了快速的查找和插入操作,是处理大量关联数据的理想选择。本文将介绍Golang中的Map,…...

2023年【电工(高级)】报名考试及电工(高级)模拟考试题

题库来源:安全生产模拟考试一点通公众号小程序 2023年【电工(高级)】报名考试及电工(高级)模拟考试题,包含电工(高级)报名考试答案和解析及电工(高级)模拟考…...

VB.net复制Ntag213卡写入UID

本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)

🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

CMake 从 GitHub 下载第三方库并使用

有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

Oracle11g安装包

Oracle 11g安装包 适用于windows系统,64位 下载路径 oracle 11g 安装包...

ui框架-文件列表展示

ui框架-文件列表展示 介绍 UI框架的文件列表展示组件,可以展示文件夹,支持列表展示和图标展示模式。组件提供了丰富的功能和可配置选项,适用于文件管理、文件上传等场景。 功能特性 支持列表模式和网格模式的切换展示支持文件和文件夹的层…...

游戏开发中常见的战斗数值英文缩写对照表

游戏开发中常见的战斗数值英文缩写对照表 基础属性(Basic Attributes) 缩写英文全称中文释义常见使用场景HPHit Points / Health Points生命值角色生存状态MPMana Points / Magic Points魔法值技能释放资源SPStamina Points体力值动作消耗资源APAction…...

【版本控制】GitHub Desktop 入门教程与开源协作全流程解析

目录 0 引言1 GitHub Desktop 入门教程1.1 安装与基础配置1.2 核心功能使用指南仓库管理日常开发流程分支管理 2 GitHub 开源协作流程详解2.1 Fork & Pull Request 模型2.2 完整协作流程步骤步骤 1: Fork(创建个人副本)步骤 2: Clone(克隆…...

【Zephyr 系列 16】构建 BLE + LoRa 协同通信系统:网关转发与混合调度实战

🧠关键词:Zephyr、BLE、LoRa、混合通信、事件驱动、网关中继、低功耗调度 📌面向读者:希望将 BLE 和 LoRa 结合应用于资产追踪、环境监测、远程数据采集等场景的开发者 📊篇幅预计:5300+ 字 🧭 背景与需求 在许多 IoT 项目中,单一通信方式往往难以兼顾近场数据采集…...

CentOS 7.9安装Nginx1.24.0时报 checking for LuaJIT 2.x ... not found

Nginx1.24编译时,报LuaJIT2.x错误, configuring additional modules adding module in /www/server/nginx/src/ngx_devel_kit ngx_devel_kit was configured adding module in /www/server/nginx/src/lua_nginx_module checking for LuaJIT 2.x ... not…...

【自然语言处理】大模型时代的数据标注(主动学习)

文章目录 A 论文出处B 背景B.1 背景介绍B.2 问题提出B.3 创新点 C 模型结构D 实验设计E 个人总结 A 论文出处 论文题目:FreeAL: Towards Human-Free Active Learning in the Era of Large Language Models发表情况:2023-EMNLP作者单位:浙江大…...