TensorBoard的简要介绍

TensorBoard 的介绍

TensorBoard是一个可视化工具,‌用于展示和理解TensorFlow运行时的计算图、‌数据分布以及训练过程中的各种指标。‌通过TensorBoard,‌用户可以直观地看到模型的训练过程、‌数据的流动以及各种统计信息,‌从而更好地调试和优化模型。‌

主要功能包括可视化模型的网络架构、‌跟踪模型指标(‌如损失和准确性等)‌、‌检查机器学习工作流程中权重、‌偏差和其他组件的直方图、‌显示非表格数据(‌包括图像、‌文本和音频)‌以及将高维嵌入投影到低维空间。

 1. TensorBoard 的安装

如果 没有安装 tensorboad,可以通过 pip 安装

pip install tensorflow
pip install tensorboard

2. TensorBoard 的导入

from torch.utils.tensorboard import SummaryWriter

3. TensorBoard 的使用

        SummaryWriter是PyTorch中用于与TensorBoard集成的类,‌它允许开发者在训练过程中记录标量、‌直方图、‌图像等多种类型的数据。

  1. 记录标量:‌使用  add_scalars()   方法记录训练过程中的标量数据,‌如损失值、‌准确率等,‌这些数据可以在TensorBoard中以折线图的形式展示,‌帮助分析训练过程中的性能变化。‌

  2. 统计直方图:‌通过  add_histogram()  方法记录权重的直方图分布,‌这在分析模型权重分布和训练稳定性方面非常有用。‌

  3. 批次显示图像:‌使用  add_image( )方法允许开发者在TensorBoard中显示训练过程中的图像,‌这对于可视化模型在特定迭代或epoch中的输出非常有用。‌

  4. 关闭SummaryWriter:‌在训练完成后,‌应使用 close() 方法关闭SummaryWriter,‌以确保所有数据都被正确写入日志文件。‌

writer = SummaryWriter("logs")  #  "logs" 生成日志文件的路径

示例:

  • add_scalar(tag, scalar_value, global_step=None, walltime=None)

    • tag:‌字符串类型,‌用于标识这个标量数据的名称,‌也就是自定义表达式名,‌例如 "train_loss" 或 "validation_accuracy"。‌
    • scalar_value:‌表示要记录的标量值,‌例如训练或验证过程中的损失值或准确率。‌
    • global_step:‌一个可选参数,‌表示全局步骤数,‌通常用于表示训练过程中的迭代次数。‌如果在多次调用add_scalar时保持tag不变而改变global_step的值,‌TensorBoard会将这些点连接起来,‌形成一条曲线,‌从而可以观察标量值如何随全局步骤数的变化而变化。‌
    • walltime:‌另一个可选参数,‌表示记录该标量值的时间戳,‌通常不需要用户指定,‌TensorBoard会自动记录当前时间。‌
from torch.utils.tensorboard import SummaryWriter

writer = SummaryWriter("logs")

for i in range(100):
    writer.add_scalar("y=z",i,i)
writer.close()

在 所生成的 文件处使用  tensorboard --logdir=logs 打开 本地服务器,查看输出结果

示例:

TensorBoard的add_image()函数用于在TensorBoard中显示图像数据,‌其参数包括‌:‌

  • tag:‌字符串类型,‌用于标识图像的数据标签。‌
  • img_tensor:‌必须是
    torch.Tensor, numpy.ndarray, or string/blobname 类型,‌表示要显示的图像数据。
  • global_step:‌(‌可选)‌整数类型,‌表示训练的步骤。‌
  • walltime:‌(‌可选)‌表示记录图像的时间戳。‌
  • dataformats:‌(‌可选)‌字符串类型,‌默认值为'CHW',‌表示图像数据的格式,‌如果图像的通道数在后面,‌比如(h,w,3)这种形式的话需要修改此参数。‌

使用add_image()函数的基本步骤如下‌:‌

  1. 首先,‌需要获取图像的地址,‌并使用适当的库(‌如PIL或OpenCV)‌打开图像。‌
  2. 如果图像数据不是torch.Tensornumpy.array类型,‌需要进行转换。‌例如,‌如果图像是以PIL格式打开的,‌可以使用numpy.array()函数将其转换为numpy数组。‌
  3. 创建SummaryWriter对象,‌并使用add_image()方法将图像数据添加到TensorBoard日志中。‌
注意要点:

        1. 通过  PIL 打开的图像,其类型是:<class 'PIL.JpegImagePlugin.JpegImageFile'>,需要将其通过 numpy 或者 open CV 转换为 :torch.Tensornumpy.array类型,才可以使用。

        2. tag 不同,可以展示出不同的图像

        3. 在转换图像之后,通过  下述查看图像类型

print(img_array.shape)         # 查看图像的类型

        4. dataformats: 默认的是(3,h,w)3个通道,h高度,w宽度。如果通道数在后面,比如(h,w,3)这种形式的话需要修改参数dataformats:CHW,HWC

from torch.utils.tensorboard import SummaryWriter
from PIL import Image
import numpy as np

img_path = '../小土堆/hymenoptera_data/train/ants_img/148715752_302c84f5a4.jpg'  # 获取图片的地址
img_PIL = Image.open(img_path)  # 打开该图片, 图片属于PIL型

img_array = np.array(img_PIL)  # 将PIL型图片使用numpy转换为numpy型
print(img_array.shape)         # 查看图像的类型

writer = SummaryWriter('logs')  # 创建SummaryWriter对象
writer.add_image('tww', img_array, 2, dataformats="HWC")  # 将图像添加到TensorBoard日志中
writer.close()  # 关闭writer对象

  • 16
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在使用tensorboard的简单代码中,常用的是SummaryWriter类中的add_scalar和add_image方法。这个类帮助我们创建一个tensorboard文件,并记录我们向tensorboard平台上传的图片和曲线。下面是一个简单的示例代码: ``` from torch.utils.tensorboard import SummaryWriter # 创建一个tensorboard文件 writer = SummaryWriter("log_directory") # 添加标量 writer.add_scalar('loss', loss_value, global_step=epoch) # 添加图像 writer.add_image('image_name', image_tensor, global_step=step) # 关闭writer writer.close() ``` 在这个代码中,我们首先导入了torch.utils.tensorboard中的SummaryWriter类。然后,我们创建了一个SummaryWriter对象,并指定了存放tensorboard文件的目录。接下来,我们可以使用add_scalar方法向tensorboard中添加标量,比如训练过程中的损失值。我们可以使用add_image方法向tensorboard中添加图像,比如模型输出的图像。最后,我们需要关闭SummaryWriter对象。 这只是一个简单的示例代码,实际应用中可能会根据具体需求进行更多的操作和设置。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Tensorboard简单应用](https://blog.csdn.net/m0_73599738/article/details/130326676)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [TensorBoard详解之安装使用和代码介绍](https://blog.csdn.net/wuzhihuaw/article/details/121357355)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值