利用tensorboard来展示图片的逐步展示

本文介绍了如何使用PyTorch的SummaryWriter模块中的add_image方法,将图片数据添加到TensorBoard日志中,包括标签设置、数据格式转换和示例操作。重点讲解了数据格式和正确使用图片数据的方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

from torch.utils.tensorboard import SummaryWriter
from PIL import Image
import numpy as np
writer = SummaryWriter("log")
image_path = "dataset/train/ants/6743948_2b8c096dda.jpg"
img_PIL = Image.open(image_path)
img_array = np.array(img_PIL)
writer.add_image("train",img_array,1,dataformats='HWC')
#需要的数据类型 图片直接扔不进去
#img_tensor (torch.Tensor, numpy.array, or string/blobname): Image data

 add_image方法的简单实用

“train”:是标签,每变一个标签整个布局就变一个

img_array:是图片的输入,不能直接扔进去一张图片,要向量或者numpy形式的

1:是步数,再tensorboard中会展示12345...步

dataformats='HWC':指定的维度的格式

    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 %

        """
        torch._C._log_api_usage_once("tensorboard.logging.add_image")
        if self._check_caffe2_blob(img_tensor):
            from caffe2.python import workspace
            img_tensor = workspace.FetchBlob(img_tensor)
        self._get_file_writer().add_summary(
            image(tag, img_tensor, dataformats=dataformats), global_step, walltime)

效果如下: 

 

 

 

<think>好的,我现在需要回答用户关于TensorBoard的功能和界面布局的问题。首先,我要确保自己正确理解用户的需求。用户提到已经参考了四个引用内容,这些引用主要涉及TensorBoardTensorboardX的安装、基本使用以及支持的数据类型。用户现在想了解TensorBoard的具体功能和界面布局。 首先,我应该从TensorBoard的核心功能开始介绍。根据引用[1]和[2],TensorBoard主要用于可视化训练过程,帮助用户监控和分析模型的性能。所以需要提到标量、图像、计算图等基本功能。引用[4]还提到直方图和embeddings等其他数据类型,这也需要涵盖进去。 接下来是界面布局部分。我需要回忆TensorBoard的各个面板,比如Scalars、Images、Graphs等,并逐一解释每个部分的作用。例如,Scalars展示损失和准确率的变化,Images显示输入或生成的图片,Graphs展示模型结构等。同时,用户可能对如何访问这些界面感兴趣,引用[2]提到通过访问http://localhost:6006来启动,这部分可以简要提及。 然后,考虑到用户可能不熟悉具体操作,需要结合引用中的信息,比如使用tensorboardX --logdir=./logs命令启动,但用户的问题更侧重于功能和界面,所以这部分可能不需要详细展开,但可以提到日志目录的重要性,因为TensorBoard的数据来源于此。 另外,引用[3]提到使用conda安装TensorBoardTensorboardX,虽然用户的问题不是关于安装,但可能在功能部分简要说明这些工具的关系,比如TensorboardX是PyTorch的适配库,而TensorBoard原生支持TensorFlow,这样用户能更好理解不同框架下的使用。 还要检查是否有遗漏的组件,比如Histograms、Distributions、Projector(用于embeddings),以及Hyperparameters调参工具。这些在引用[4]中提到,需要详细说明每个部分的作用,比如直方图展示参数分布,Projector可视化高维数据等。 最后,确保回答结构清晰,分点列出功能和对应的界面组件,每个部分简明扼要。同时,生成的相关问题要围绕用户可能进一步想知道的内容,比如如何自定义面板、与其他工具集成、常见问题等。 总结一下,回答的结构应该是先概述TensorBoard的功能,然后详细描述每个界面组件的作用,最后附上相关问题。需要确保引用正确,比如在提到标量、图像时引用[1][4],在启动方式时引用[2][3]等。同时,使用中文回答,避免使用任何Markdown格式,保持口语化但专业。</think>TensorBoard机器学习训练过程可视化工具,提供多维度的模型监测与分析功能[^1]。其核心界面由以下功能模块构成: $$ \text{TensorBoard 核心组件} = \{ \text{Scalars, Images, Graphs, Histograms, Distributions, Projector, Text, HPARAMS} \} $$ ### 一、核心功能界面解析 1. **标量监控(Scalars)** - 实时追踪损失函数、准确率等标量指标变化曲线 - 支持多实验对比,自动生成平滑曲线[^1] - 典型应用:监控训练集/验证集的loss收敛情况 2. **图像可视化(Images)** - 显示输入样本、特征图、生成图像等视觉数据 - 支持滑动查看不同训练步数的输出演变 - 案例:可视化CNN卷积层激活图[^4] 3. **计算图(Graphs)** - 交互式展示神经网络计算图拓扑结构 - 支持节点展开/折叠,查看张量维度信息 - 特别适用于检查模型连接是否正确[^2] 4. **参数分布(Histograms)** - 以直方图形式呈现权重/梯度的分布变化 - 帮助诊断梯度消失/爆炸问题 - 支持分位数曲线叠加显示 5. **高维投影(Projector)** - 使用PCA/t-SNE降维可视化嵌入向量 - 支持三维空间交互式探索 - 应用于词向量、特征空间分析[^4] ### 二、界面布局特性 - **实验对比栏**:左侧面板支持多实验并行对比,通过勾选不同日志目录切换视图 - **时间轴控件**:顶部滑动条可回放训练过程,观察指标动态变化 - **筛选搜索框**:每个标签页提供正则表达式过滤特定指标 - **布局预设**:支持拖拽调整面板位置,保存自定义工作区布局[^2]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值