Tensorboard (1)

Tensorboard是Tensorflow中的数据可视化工具,用于模型的性能度量和可视化。它可以展示模型结构、跟踪损失和准确性、显示权重直方图以及处理图像、文本和音频数据。通过SummaryWriter保存数据,然后使用tensorboard命令启动服务进行可视化,例如使用add_scalar进行数值变化的可视化,add_image则用于展示图像数据。
部署运行你感兴趣的模型镜像

Tensorboard (1)

机器学习通常涉及在训练期间可视化和度量模型的性能。有许多工具可用于此任务。

一、介绍TensorBoard

参考文章:

https://cloud.tencent.com/developer/article/1955304
https://zhuanlan.zhihu.com/p/103630393

Tensorboard:

TensorBoard 是一组用于数据可视化的工具。它包含在流行的开源机器学习库 Tensorflow 中。TensorBoard 的主要功能包括:

  • 可视化模型的网络架构
  • 跟踪模型指标,如损失和准确性等
  • 检查机器学习工作流程中权重、偏差和其他组件的直方图
  • 显示非表格数据,包括图像、文本和音频
  • 将高维嵌入投影到低维空间
1.本地启动Tensorboard
tensorboard --logdir=<directory_name>   --port=<port_num>
# 打开终端或命令提示符并运行  将 directory_name 标记替换为保存数据的目录。默认是“logs”
# port_num 是访问服务器的端口号,可以指定特定的端口号,避免与其他使用者产生冲突
# 最终的地址是 <程序运行目录>/<directory_name>

Tensorboard使用逻辑:

1.将代码运行中某些你关心的数据保存在一个文件夹中(这一步由SummaryWriter实例对象完成)

2.再读取这个文件夹中的数据,用浏览器显示出来(通过在命令行运行tensorboard完成)

2.代码实例1
# 导入 Tensorboard
from torch.utils.tensorboard import SummaryWriter

if __name__ == '__main__':
	# 实例化对象
    write = SummaryWriter("logs")
        
    # y=2x
    for i in range(1,100):
        write.add_scalar("y=2x",2*i,i)

    write.close()

运行之后,终端输入:

tensorboard --logdir=<logs>   --port=6007

得到结果:

image-20221212163614263

可以通过 add_scalar() 函数将 数值变换可视化出来

def add_scalar(self, tag, scalar_value, global_step=None, walltime=None)
    
    Args:
         tag (string): 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
3.代码实例2
from torch.utils.tensorboard import SummaryWriter
from PIL import Image
import numpy as np



if __name__ == '__main__':
    write = SummaryWriter("logs")

    # 图片路径
    image_path = "/home/zxz/DEEPLEARNING/DEMO/TensorBoard_1/hymenoptera_data/train/ants/0013035.jpg"
    img = Image.open(image_path)
    print(type(img))

    # 将图片转化为  numpy.array 类型
    img_array = np.array(img)
    print(type(img_array))
    print(img_array.shape)

    write.add_image("test",img_array,1,dataformats='HWC')

    write.close()

结果:

image-20221212171944506

可以通过add_image() 可视化模型训练过程中的图像

df add_image(self, tag, img_tensor, global_step=None, walltime=None, dataformats='CHW')
    
   Args:
        tag (string): Data identifier  (表头 )
        img_tensor (torch.Tensor, numpy.array, or string/blobname): Image data  # (图像数据--括号后面是图像数据要求的类型)
        global_step (int): Global step value to record                          # (训练步数: x轴)
        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``. 
       #  输入的 img_tensor 默认尺寸 (形状shape)(3, H, W)3 通道 H为高  W为宽
       #  若输入的 img_tensor 尺寸 (形状shape)(H, W,3) ,H为高  W为宽  3 通道  需要添加参数  dataformats= 'HWC'

您可能感兴趣的与本文相关的镜像

TensorFlow-v2.15

TensorFlow-v2.15

TensorFlow

TensorFlow 是由Google Brain 团队开发的开源机器学习框架,广泛应用于深度学习研究和生产环境。 它提供了一个灵活的平台,用于构建和训练各种机器学习模型

<think>我们正在讨论如何使用TensorBoard来可视化PyTorch训练过程中的epoch和loss数据。根据引用内容,TensorBoard是一个强大的可视化工具,可以帮助我们跟踪和可视化训练过程中的各种指标,包括损失(loss)随训练轮次(epoch)的变化。步骤概述:1.安装TensorBoard(如果尚未安装)。2.在训练代码中设置TensorBoard的SummaryWriter。3.在训练循环中,使用add_scalar方法记录每个epoch的loss值。4.启动TensorBoard服务并查看可视化结果。详细步骤:###1.安装TensorBoard如果使用pip,可以通过以下命令安装:```bashpipinstalltensorboard```###2.在训练代码中导入并初始化SummaryWriter在PyTorch代码中,首先导入`torch.utils.tensorboard`模块中的`SummaryWriter`。```pythonfromtorch.utils.tensorboardimportSummaryWriter#初始化SummaryWriter,指定日志保存的目录(例如:'runs/experiment1')writer=SummaryWriter('runs/experiment1')```###3.在训练循环中记录loss在每个epoch的训练循环中,计算训练损失和验证损失(如果有的话),然后使用`add_scalar`方法将损失值写入TensorBoard。```pythonforepochinrange(num_epochs):#训练模型...train_loss=...#计算训练损失val_loss=...#计算验证损失(可选)#将训练损失写入TensorBoard,标签为'train_loss',横轴为epochwriter.add_scalar('Loss/train',train_loss,epoch)#将验证损失写入TensorBoard,标签为'Loss/val',横轴为epochwriter.add_scalar('Loss/val',val_loss,epoch)```###4.关闭SummaryWriter训练结束后,关闭writer。```pythonwriter.close()```###5.启动TensorBoard查看结果在命令行中,导航到项目目录,运行以下命令(指定日志目录为上面代码中设置的目录,例如'runs'):```bashtensorboard--logdir=runs```然后在浏览器中打开TensorBoard提供的地址(通常是`http://localhost:6006/`),在“SCALARS”选项卡下可以看到训练损失和验证损失随epoch变化的曲线。###扩展:同时记录其他指标除了损失,还可以记录其他指标(如准确率)以及图像、直方图等。例如:```python#记录准确率writer.add_scalar('Accuracy/train',train_accuracy,epoch)writer.add_scalar('Accuracy/val',val_accuracy,epoch)#记录权重直方图(例如记录某一层的权重)writer.add_histogram('layer1/weights',model.layer1.weight,epoch)```###注意事项-确保每个实验使用不同的日志目录,以便在TensorBoard中区分。-使用有意义的标签(如'Loss/train'和'Loss/val')以便于识别。通过上述步骤,我们可以方便地使用TensorBoard来监控训练过程,观察损失随训练轮次的变化趋势,从而调整超参数或诊断问题(如过拟合、欠拟合)[^1][^2][^3][^4]。引用[4]中特别提到了`add_scalar`方法的使用,这正是记录损失曲线的关键方法[^4]。引用[5]则展示了如何记录嵌入向量等更复杂的数据,但我们的重点在标量(scalar)数据上[^5]。§§相关问题§§1.如何在TensorBoard中同时比较多个实验的训练曲线?2.除了损失和准确率,TensorBoard还可以可视化哪些对训练有帮助的信息?3.如何将整个模型结构图可视化到TensorBoard中?</think>### TensorBoard深度学习中的核心用途 TensorBoard 是 PyTorch 和 TensorFlow 的官方可视化工具,主要用于: 1. **训练过程监控**:实时跟踪损失(loss)、准确率等指标随训练轮次(epoch)的变化 2. **模型结构可视化**:直观展示神经网络架构 3. **数据分布分析**:可视化输入数据和高维特征 4. **超参数调优**:对比不同实验配置的效果 5. **权重分析**:监控权重分布和梯度变化[^4] ### 可视化 epoch 和 loss 的完整步骤 #### 1. 安装与初始化 ```bash pip install tensorboard ``` ```python from torch.utils.tensorboard import SummaryWriter # 创建写入器(日志保存到runs/exp1目录) writer = SummaryWriter('runs/exp1') ``` #### 2. 在训练循环中记录 loss ```python for epoch in range(num_epochs): # ... 训练代码 ... train_loss = ... # 计算当前epoch的损失值 # 记录标量数据(loss随epoch的变化) writer.add_scalar('Loss/train', train_loss, epoch) # 可选:记录验证损失 if validate: val_loss = ... writer.add_scalar('Loss/val', val_loss, epoch) ``` #### 3. 启动 TensorBoard 服务 ```bash tensorboard --logdir=runs ``` 访问 `http://localhost:6006` 查看可视化结果 #### 4. 核心可视化效果 在 TensorBoard 界面中: - **SCALARS 标签页**:显示 loss 随 epoch 变化的曲线 - 横坐标:训练轮次 (epoch) - 纵坐标:损失值 (loss) - 支持同时显示多条曲线(如训练/验证损失对比) #### 5. 进阶可视化技巧 ```python # 添加自定义标签说明 writer.add_text('Experiment Info', 'Learning Rate=0.001, Batch Size=64') # 可视化权重分布(诊断梯度问题) writer.add_histogram('conv1/weights', model.conv1.weight, epoch) # 高维数据降维可视化(如PCA/t-SNE) features = ... # 提取的特征向量 writer.add_embedding(features, metadata=class_labels, global_step=epoch)[^5] ``` ### 关键优势分析 1. **实时监控**:无需等待训练完成即可观察收敛趋势 2. **问题诊断**:通过 loss 曲线识别: - 过拟合(训练 loss↓ 验证 loss↑) - 欠拟合(双 loss 均高) - 梯度消失(loss 长期不下降) 3. **实验对比**:在同一个图表中叠加多个实验的 loss 曲线 4. **性能优化**:识别训练瓶颈(如特定 epoch 后 loss 停滞) > **操作提示**:当观察到 loss 异常(如示例中 loss 长时间维持在 2.3 附近),可立即暂停训练调整超参数,避免无效计算[^1][^2]。 ### 典型应用场景 1. **学习率调优**:对比不同学习率下的 loss 下降速度 2. **早停机制**:当验证 loss 连续上升时停止训练 3. **模型选择**:比较不同网络结构的收敛效果 4. **数据增强评估**:观察增强后 loss 的变化趋势 通过 TensorBoard 的 loss-epoch 可视化,开发者可以直观掌握模型学习动态,显著提升调优效率[^3][^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值