[pytorch入门] 2. tensorboard

tensorboard简介

TensorBoard 是一组用于数据可视化的工具。它包含在流行的开源机器学习库 Tensorflow 中.但是也可以独立安装,服务Pytorch等其他的框架

可以常常用来观察训练过程中每一阶段如何输出的

  • 安装

    复制代码
    pip install tensorboard
  • 启动

    python 复制代码
    tensorboard --logdir=<directory_name>

    会默认在6006端口打开,也可以自行制定窗口,如:

    python 复制代码
    tensorboard --logdir=logs --port=6007

用法

  1. 所在类:

    python 复制代码
    from torch.utils.tensorboard import SummaryWriter

    介绍:

    python 复制代码
    class SummaryWriter:
        """Writes entries directly to event files in the log_dir to be
        consumed by TensorBoard.
    
        The `SummaryWriter` class provides a high-level API to create an event file
        in a given directory and add summaries and events to it. The class updates the
        file contents asynchronously. This allows a training program to call methods
        to add data to the file directly from the training loop, without slowing down
        training.
        """
  2. 创建对象

    python 复制代码
    writer = SummaryWriter('logs') # 说明写入哪个文件夹
  3. 常用方法

    python 复制代码
    writer.add_image()   # 图像方式
    writer.add_scalar()  # 坐标方式
    
    writer.close()  # 使用完之后需要close

add_scalar()

python 复制代码
    def add_scalar(self,tag,scalar_value,global_step=None,walltime=None,new_style=False,double_precision=False,):
    """Add scalar data to summary.
        添加标量数据到summary中

        Args:
            tag (str): Data identifier 图表标题
            scalar_value (float or string/blobname): Value to save 数值(y轴)
            global_step (int): Global step value to record 训练到多少步(x轴)
            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 %

        """

注意:向writer中写入新事件的同时她也会保留上一个事件,这就会导致一些拟合出现问题

解决:删除之前的log文件,重新生成

add_image()

python 复制代码
    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 (str): Data identifier
            img_tensor (torch.Tensor, numpy.ndarray, 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
            dataformats (str): Image data format specification of the form
              CHW, HWC, HW, WH, etc.
        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``.
            """

实践

如在tensorboard中展示图片:

python 复制代码
from torch.utils.tensorboard import SummaryWriter
import numpy as np
from PIL import Image

writer = SummaryWriter('logs')
image_path = './dataset2/train/ants_image/0013035.jpg'
img_PIL = Image.open(image_path)
img_array = np.array(img_PIL)
print(type(img_array))
print(img_array.shape)

writer.add_image("test",img_array,1,dataformats='HWC') # 展示读取的图片


for i in range(100):
    writer.add_scalar('y=2x', 3*i, i)     # 绘图

writer.close()
  • writer.add_image中的参数

    python 复制代码
    def add_image(
            self, tag, img_tensor, global_step=None, walltime=None, dataformats="CHW"
        ):

    名称、图形向量(ndarray类型),第几步(是滑动翻页那种的,这里相当于设定是第几页,每次向后设定时不会清除原来的数据)

当前代码效果如图:

修改图片后:

python 复制代码
from torch.utils.tensorboard import SummaryWriter
import numpy as np
from PIL import Image

writer = SummaryWriter('logs')
image_path = './dataset2/train/ants_image/5650366_e22b7e1065.jpg'
img_PIL = Image.open(image_path)
img_array = np.array(img_PIL)
print(type(img_array))
print(img_array.shape)

# 这里更新,说明为第二步
writer.add_image("test",img_array,2,dataformats='HWC')


for i in range(100):
    writer.add_scalar('y=2x', 3*i, i)

writer.close()

拖拉就会发现有两张图

相关推荐
小白学大数据4 分钟前
Python+Selenium爬虫:豆瓣登录反反爬策略解析
分布式·爬虫·python·selenium
未来之窗软件服务7 分钟前
人体肢体渲染-一步几个脚印从头设计数字生命——仙盟创梦IDE
开发语言·ide·人工智能·python·pygame·仙盟创梦ide
戌崂石14 分钟前
最优化方法Python计算:有约束优化应用——线性不可分问题支持向量机
python·机器学习·支持向量机·最优化方法
Echo``14 分钟前
40:相机与镜头选型
开发语言·人工智能·深度学习·计算机视觉·视觉检测
玉笥寻珍18 分钟前
Web安全渗透测试基础知识之内存动态分配异常篇
网络·python·安全·web安全·网络安全
Christo322 分钟前
关于在深度聚类中Representation Collapse现象
人工智能·深度学习·算法·机器学习·数据挖掘·embedding·聚类
Apache RocketMQ23 分钟前
Apache RocketMQ ACL 2.0 全新升级
人工智能
Channing Lewis24 分钟前
如何判断一个网站后端是用什么语言写的
前端·数据库·python
noravinsc31 分钟前
InforSuite RDS 与django结合
后端·python·django
QX_hao33 分钟前
【project】--数据挖掘
人工智能·数据挖掘