Tensorboard的使用

tensorboard的使用(常用方法及可视化)


前言

一、add_scalar()方法

简单介绍

可以看到源码中对add_scalar的介绍

    def add_scalar(
        self,
        tag,
        scalar_value,
        global_step=None,
        walltime=None,
        new_style=False,
        double_precision=False,
    ):
        """Add scalar data to summary.

        Args:
            tag (string): Data identifier
            scalar_value (float or string/blobname): Value to save
            global_step (int): Global step value to record
            walltime (float): Optional override default walltime (time.time())
              with seconds after epoch of event
            new_style (boolean): Whether to use new style (tensor field) or old
              style (simple_value field). New style could lead to faster data loading.
        Examples::

            from torch.utils.tensorboard import SummaryWriter
            writer = SummaryWriter()
            x = range(100)
            for i in x:
                writer.add_scalar('y=2x', i * 2, i)
            writer.close()

        Expected result:

        .. image:: _static/img/tensorboard/add_scalar.png
           :scale: 50 %

        """

其中常用的参数是tag,scalar_value,global_step

tag:相当于图表的标题
scalar_value:相当于图表的纵坐标值(Y轴)
global_step:相当于图表的横坐标值(X轴)

简单使用

# 导入类方法
from torch.utils.tensorboard import SummaryWriter
# 生成一个writer对象,并指定生成图片的目录,其中logs为指定生成事件的目录
writer = SummaryWriter("logs")
for i in range(100):
	# 以y=x为标题,i为横坐标值,i同时也为纵坐标值,相当于绘制了一个y=x(0<=x<100)的直线
    writer.add_scalar("y=x",i,i)
writer.close()

运行代码之后会生成一个指定名字的目录,并且会包含一个事件在里面,这个事件要用tensorboard打开。
在这里插入图片描述
tensorboard打开之后的效果如下:
在这里插入图片描述

打开生成事件

点击pycharm下方的terminal窗口

输入指令tensorboard --logdir=logs,就会自动在本地启用6006端口,但时这样会用一个问题就是,当多个人同时使用远程主机进行显示操作时,会出现端口被占用的情况,所以我们亦可以指定端口打开,可输入指令tensorboard --logdir=logs --port=6007指定6007或其他空闲端口。
演示效果
点击链接之后可以看到效果图:
在这里插入图片描述

二、add_image()方法

简单介绍

可以看到源码中对add_image的介绍

     def add_image(self, tag, img_tensor, global_step=None, walltime=None, dataformats='CHW'):
     """Add image data to summary.

     Note that this requires the ``pillow`` package.

     Args:
         tag (string): Data identifier
         img_tensor (torch.Tensor, numpy.array, or string/blobname): Image data
         global_step (int): Global step value to record
         walltime (float): Optional override default walltime (time.time())
           seconds after epoch of event
     Shape:
         img_tensor: Default is :math:`(3, H, W)`. You can use ``torchvision.utils.make_grid()`` to
         convert a batch of tensor into 3xHxW format or call ``add_images`` and let us do the job.
         Tensor with :math:`(1, H, W)`, :math:`(H, W)`, :math:`(H, W, 3)` is also suitable as long as
         corresponding ``dataformats`` argument is passed, e.g. ``CHW``, ``HWC``, ``HW``.

     Examples::

         from torch.utils.tensorboard import SummaryWriter
         import numpy as np
         img = np.zeros((3, 100, 100))
         img[0] = np.arange(0, 10000).reshape(100, 100) / 10000
         img[1] = 1 - np.arange(0, 10000).reshape(100, 100) / 10000

         img_HWC = np.zeros((100, 100, 3))
         img_HWC[:, :, 0] = np.arange(0, 10000).reshape(100, 100) / 10000
         img_HWC[:, :, 1] = 1 - np.arange(0, 10000).reshape(100, 100) / 10000

         writer = SummaryWriter()
         writer.add_image('my_image', img, 0)

         # If you have non-default dimension setting, set the dataformats argument.
         writer.add_image('my_image_HWC', img_HWC, 0, dataformats='HWC')
         writer.close()

     Expected result:

     .. image:: _static/img/tensorboard/add_image.png
        :scale: 50 %

     """

其中常用的参数是tag,img_tensor,global_step
img_tensor需要是torch.Tensor, numpy.array, or string/blobname这几种类型这里我们用ndarray来讲解,然后将图像转换成ndarray就需要用到其他模块opencv或者numpy,没有的同学可以安装一下
opencv安装指令pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple
numpy安装指令pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple

tag:相当于图表的标题
img_tensor:相当于图片对象(torch.Tensor, numpy.array, or string/blobname)
global_step:是步长

简单使用

# 导入相关模块
from torch.utils.tensorboard import SummaryWriter
from PIL import Image
import numpy as np
# 生成一个writer对象
writer = SummaryWriter("logs")
image_path = r"D:\pycharm_professional\PycharmProjects\learning_pytorch\dataset\train\ants_image\0013035.jpg"
# 读取图片
img_PIL = Image.open(image_path)
# 将图片转化为ndarray类型
img_array = np.array(img_PIL)
writer.add_image("test",img_array,1, dataformats='HWC')
writer.close()

注意writer.add_image("test",img_array,1, dataformats='HWC')中需要加上 dataformats='HWC'其中H代表图片高度,W代表图片宽度,C代表图片通道数。默认情况下的顺序是(C,H,W),但是使用np.array()转化之后顺序变成了(H,W,C),所以要将dataformat的值设为HWC。如果不这么做的话就会报错哦!说到如何查看图片对象的这个属性时,我们可以通过pycharm下方的console控制台来逐行执行,查看图片对象的相关属性或者直接print(img_array.shape)来查看。

运行代码之后会生成一个指定名字的目录,并且会包含一个事件在里面,这个事件要用tensorboard打开。
在这里插入图片描述
tensorboard打开之后的效果如下:
1.png)

打开生成事件

点击pycharm下方的terminal窗口

输入指令tensorboard --logdir=logs,就会自动在本地启用6006端口,但时这样会用一个问题就是,当多个人同时使用远程主机进行显示操作时,会出现端口被占用的情况,所以我们亦可以指定端口打开,可输入指令tensorboard --logdir=logs --port=6007指定6007或其他空闲端口。
演示效果
点击链接之后可以看到效果图:
在这里插入图片描述

总结

  • 特别要注意add_image和add_scalar要求传入的数据类型
  • 要学会使用pycharm中的ctrl+pctrl+alt这两个组合快捷键
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

布兹学长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值