• 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中输入如下命令,并运行。
          1. from torch.utils.tensorboard import SummaryWriter
          2. writer = SummaryWriter("logs") # #第一个参数指明writer把summary内容写在哪个目录下
          3. # y = x
          4. for i in range(100):
          5. writer.add_scalar("y=x", i, i) # 添加数据
          6. # 参数:图表名称,y轴,x轴
          7. # y = 2x
          8. for i in range(100):
          9. writer.add_scalar("y=x", 2 * i, i) # 添加数据
          10. 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文件中的事件文件)
        1. from torch.utils.tensorboard import SummaryWriter
        2. from PIL import Image
        3. import numpy as np
        4. img_path = "images/热巴.jpg" # 图片相对地址
        5. img = Image.open(img_path)
        6. img.show()
        7. print(type(img))
        8. # add_image()的第2个参数要求的格式是torch.Tensor ; numpy.array ; string
        9. # 转换成numpy.array格式
        10. img = np.array(img)
        11. print(type(img))
        12. writer = SummaryWriter("logs")
        13. # 从PIL利用numpy转换到numpy.array格式,需要在add_image()函数的参数中,利用dataformats明确指定出shape中的每一个维度都表示的啥含义(三维的是'HWC')
        14. writer.add_image("热巴", img, 1, dataformats='HWC')
        15. writer.close()
      • 使用TensorBoard可视化该事件文件。可以直接在PyCharm里的终端输入命令打开。
        • tensorboard --logdir=logs --port=6007
        • 点击链接即可打开。
      • add_image()也可以在同一个标题下添加多张图片,但需要设置展示顺序。修改代码,删除logs中的事件文件,重新运行。
          1. from torch.utils.tensorboard import SummaryWriter
          2. from PIL import Image
          3. import numpy as np
          4. writer = SummaryWriter("logs")
          5. img_path = "images/热巴1.jpg" # 图片相对地址
          6. img = Image.open(img_path)
          7. img = np.array(img)
          8. writer.add_image("热巴", img, 1, dataformats='HWC') # global_step = 1 表明:在tag中,第一张图片是img=热巴1.jpg
          9. img_path = "images/热巴2.jpg" # 图片相对地址
          10. img = Image.open(img_path)
          11. img = np.array(img)
          12. writer.add_image("热巴", img, 2, dataformats='HWC') # global_step = 1 表明:在tag中,第一张图片是img=热巴1.jpg
          13. writer.close()
        • 刷新网站,点击下列按钮即可切换图片。
        •  
  • 相关阅读:
    springboot send qq mail
    ​力扣解法汇总1331-数组序号转换
    实战:redux的基本使用
    剑指offer面试题36 数组中的逆序对
    `VUE`的介绍
    灵魂一问:一个Java文件的执行全部过程你确定都清楚吗?
    华为云云耀云服务器L实例评测 | 实例使用教学之高级使用:配置 Git SSH Key 进行自动识别拉代码
    Jsonp跨域的坑,关于jsonp你真的了解吗
    图论(一)之概念介绍与图形#matlab
    2022广西师范大学暑期训练赛 E ,K
  • 原文地址:https://blog.csdn.net/weixin_45100742/article/details/133919886