栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Tensorboard的使用

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Tensorboard的使用

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

文章目录
  • 前言
  • 一、add_scalar()方法
    • 简单介绍
    • 简单使用
    • 打开生成事件
  • 二、add_image()方法
    • 简单介绍
    • 简单使用
    • 打开生成事件
  • 总结


前言 一、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_professionalPycharmProjectslearning_pytorchdatasettrainants_image013035.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打开之后的效果如下:

打开生成事件

点击pycharm下方的terminal窗口

输入指令tensorboard --logdir=logs,就会自动在本地启用6006端口,但时这样会用一个问题就是,当多个人同时使用远程主机进行显示操作时,会出现端口被占用的情况,所以我们亦可以指定端口打开,可输入指令tensorboard --logdir=logs --port=6007指定6007或其他空闲端口。

点击链接之后可以看到效果图:

总结
  • 特别要注意add_image和add_scalar要求传入的数据类型
  • 要学会使用pycharm中的ctrl+p和ctrl+alt这两个组合快捷键
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/987413.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号