[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()

拖拉就会发现有两张图

相关推荐
江上鹤.1485 分钟前
Day 50 CBAM 注意力机制
人工智能·深度学习
deephub7 分钟前
大规模向量检索优化:Binary Quantization 让 RAG 系统内存占用降低 32 倍
人工智能·大语言模型·向量检索·rag
站大爷IP9 分钟前
从零开始用Python生成码:自定义样式与Logo嵌入
python
人工智能培训12 分钟前
深度学习—卷积神经网络(1)
人工智能·深度学习·神经网络·机器学习·cnn·知识图谱·dnn
ㄣ知冷煖★12 分钟前
【Google系列】AI智能体技术白皮书
人工智能·agent
新加坡内哥谈技术15 分钟前
阿尔茨海默症的成因与风险因素到模型与干预分析
人工智能
张张张三丰28 分钟前
【文献】金融市场发展与企业风险管理:来自上海原油期货上市的证据
人工智能·# 相关知识
天才测试猿31 分钟前
2026全新软件测试面试八股文【含答案+文档】
自动化测试·软件测试·python·功能测试·测试工具·面试·职场和发展
阿里云大数据AI技术31 分钟前
真实案例复盘:从“三套烟囱”到 All in ES,这家企业如何砍掉 40%运维成本?
人工智能·elasticsearch·搜索引擎
TonyLee01732 分钟前
python深拷贝与浅拷贝机制
python