当前位置: 首页 > 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()
      • 刷新网站,点击下列按钮即可切换图片。
      •  
http://www.lryc.cn/news/199894.html

相关文章:

  • 03 里氏替换原则
  • 【微信小程序】无纸化会议OA系统之首页搭建
  • 小程序:uniapp解决主包体积过大的问题
  • [opencv]图像和特征点旋转
  • 世界粮食日:宏工科技有对策,赋能食品生产高效可持续发展
  • FutureTask配合Thread实现处理有返回结果的源码、逻辑与架构分析
  • Queue Deque 介绍
  • 机器学习(23)---Boosting tree(课堂笔记)
  • Excel 导出打不开
  • css钟表数字样式
  • 一步一步分析ChatGPT,1 粘性,2 传染性, 3 双边网络效应
  • Arthas(阿尔萨斯):阿里巴巴开源的线上问题诊断工具
  • 由Django-Session配置引发的反序列化安全问题
  • 16-spring AOP核心对象的创建
  • Golang 泛型的介绍
  • RK3568笔记四:基于TensorFlow花卉图像分类部署
  • 甄知科技张礼军:数智化转型助企业破茧成蝶!
  • Golang Map:高效的键值对容器
  • 2023年【电工(高级)】报名考试及电工(高级)模拟考试题
  • 伊朗相关的OilRig组织在为期8个月的网络攻击中针对中东政府
  • 服务器数据恢复-linux+raid+VMwave ESX数据恢复案例
  • 残疾人求助报警器
  • 【Datawhale】扩散模型学习笔记 第一次打卡
  • Spring Boot学习笔记
  • 图像边缘检测--(Sobel、Laplacian、Canny)
  • 【计算机网络笔记】计算机网络性能(2)——时延带宽积、丢包率、吞吐量/率
  • 自学(黑客技术)——网络安全高效学习方法
  • 【Linux】进程概念与进程状态
  • 解决安装nvm以后windows cmd无法找到npm/yarn命令的问题
  • 深入解析Java正则表达式:定义、原理和实例