TensorBoard数据可视化工具详解

释放双眼,带上耳机,听听看~!
了解TensorBoard的安装和使用方法,掌握SummaryWriter的初始化和add_image方法,实现数据可视化,提高训练效率。

TensorBoard

在数据训练过程中,我们需要一个可观化的工具查看数据的变化过程、状态,TensorBoard就是这样的数据可视化的工具。

TensorBoard在训练过程中很有用, 特别是后期探究模型的输出。早斯Pytorch自研了TensorBoardX,只是安装时需要tensorflow支持,Pytorch 1.1后引入了TensorBoard,无需tensforflow, 所以1.1之后可独立安装TensorBoard。

附录章节有更多指引性内容

使用指南

  1. 安装tensorboard --logdir="logs" 并启动
  2. 在py代码里引入from torch.utils.tensorboard import SummaryWriter编写相应的代码
  3. 用完之后需要将SummaryWriter关闭close

关于日志保存路径

  • 如果代码指定了输出路径writer = SummaryWriter('logs')则日志会保存在对应的路径下;
  • 如果不指定writer = SummaryWriter(),日志默认会保存在 run/<日期时间>
  • 不管指定与不指定tensorboard启动命令与SummaryWriter(..)都需要对应
writer = SummaryWriter('logs')
...
# 控制台
tensorboard --logdir="logs"

writer = SummaryWriter()
...
# 控制台
tensorboard

端口也可以指定,默认是6006

TensorBoard数据可视化工具详解

4.改变tensorboard启动端口

tensorboard  --port=6000

默认是6006,更多信息看 ‘相关知识’,

SummaryWriter

初始化

writer = SummaryWriter("logs")

add_image – 用于展示图片, 可用于检查模型的输入,监测 feature map 的变化,或是观察 weight

声明

def add_image(
    self, tag, img_tensor, global_step=None, walltime=None, dataformats="CHW"
):

主要参数:

  • tag: title
  • img_tensor: ndarray
  • global_step: x轴,步数
  • dataformat: HCW (H:高度,W:宽度, C:通道

备注

  1. img_tensor: 图片值 0~255之间,默认(3,H,W),其中3表示通道3。可用torchvision.utils.make_grid() 将图片转为相应通道或者add_images()。math:(1, H, W), :math:(H, W), :math:(H, W, 3)同样适用。
  2. dataformats: 在torch内提供直接排序通道的参数 dataformats=’HWC’, ndarray与其不一致,需要指定顺序(e.g. CHW, HWC, HW.), 如下:
ants_img_path = "data_for_tensorboard/train/ants_image/0013035.jpg"
img_PIL = Image.open(ants_img_path)
img_array = np.array(img_PIL)
writer.add_image("test", img_array, 1, dataformats="HWC")

add_scalar – 用于展示标量,常用于对比,如 Train Loss 和 Valid Loss 的比较等。

声明

def add_scalar(
    self,
    tag,
    scalar_value,
    global_step=None,
    walltime=None,
    new_style=False,
    double_precision=False,
):

主要参数:

  • tag: title
  • scale_value: tensor类型的图片
  • global_step: x轴,步数
  • walltime: 记录发生的时间,默认为 time.time()

add_graph – 绘制(神经)网络结构拓扑

声明

def add_graph(
    self, model, input_to_model=None, verbose=False, use_strict_trace=True
):

主要参数说明

  • model:需要可视化的模型,必须是nn.Module
  • input_to_model:模型输入的数据
  • verbose:是否打印计算图结构信息

close – 用完之后要关闭

writer.close()

更多方法见“相关知识”.

实战

安装tensorboard

pip install tensorboard

# 或 conda虚拟环境下
# conda install tensorboard

编写SummaryWriter

导入

torch.utils.tensorboard.writer.SummaryWriter

代码

代码功能:

  • 图片
    • 从PIL转为tensor
    • 将图片输出到tensorboard展示
  • 标量
    • 展示1至10步的标量数据
    • 需要注意:数据拟合问题
from torch.utils.tensorboard import SummaryWriter
from PIL import Image
import numpy as np

# 实始化一个SummaryWriter, 图径logs,该路么要和tensorboard --logdir=logs 相对
# 如不写,默认为runs/<日期时间>
writer = SummaryWriter("logs")

"""
add_image的使用
"""
ants_img_path = "data_for_tensorboard/train/ants_image/0013035.jpg"
img_PIL = Image.open(ants_img_path)
# 将img_path路径对应的图片对象转为numpy类型, 并赋值给image
img_array = np.array(img_PIL)
# 查看图片通道 默认的通道以在最后一位
# 从PIL到numpy,需要在add_images()中指定shape中每一个数字/维表示的含义,即要设置add_image中dataformats参数
writer.add_image("test", img_array, 1, dataformats="HWC")

bees_img_path = "data_for_tensorboard/train/bees_image/16838648_415acd9e3f.jpg"
bees_img_PIL = Image.open(bees_img_path)
bees_img_array = np.array(bees_img_PIL)
writer.add_image("test", bees_img_array, 3, dataformats="HWC")


"""
# add_scalar() 的使用
"""
for i in range(200):
    # 图是的展示是根据title来里合的
    # 当x和y轴改变时,需要将title一起改否则图像会有问题 (被拟合在一块,除非本身就需要执行这样的拟合),
    # 当存错误的拟合问题时:解决办法是将logs文件下的文件删除重新开始
    writer.add_scalar("y=x", i, i)


# 关闭
writer.close()

如果不同算法的数据在同一个tag里显示,会存在拟合问题。
解决办法:删除重做,将不同算法的数据分在不同的tag里。

启动tensorboard

tensorboard  --logdir=logs

参数说明

  • logdir是指输出路径,用SummaryWriter配置的路径保持一到处,默认为 runs/<日期时间>
  • 默认端口:6006 端口可修改

成功启动会有如下提示

TensorFlow installation not found - running with reduced feature set.  
Serving TensorBoard on localhost; to expose to the network, use a proxy or pass --bind_all  
TensorBoard 2.15.1 at http://localhost:6006/ (Press CTRL+C to quit)  

浏览

在浏览器上打开http://localhost:6006/

标量

TensorBoard数据可视化工具详解

图片

TensorBoard数据可视化工具详解

tensorboardX和tensorboard

在tensorboard还没有引入PyTorch之前,PyTorch自研tensorboardX,但安装时需要装tnesorflow。而tensorboard则不需要。 所以在网上可以看到有些文章让安装tensorboardX的情况。

tensorboard是在 PyTorch1.1之后引入的,所以请根据自身主机上PyTorch的版本选择是安装tensorboard还是tensorboardX,。另外还有文章称装tensorboard需要tensorboardX支持,但笔者试了一把,似乎只要tensorboard就成。

如果机器上有tensflow,应该就自带了tensorboard

SummaryWriter更多方法

  1. PyCharm中,鼠标光标移到WummeryWirter,再用CTRL+鼠标点击,可调出文档查看更详细的方法。
  2. 笔记无意发现一个读书笔记TensorboardX学习笔记,对于方法有中文解释,虽然是TensorboardX但Tensorboard同样适用

其他主要方法有

add_scalars(main_tag, tag_scalar_dict, global_step=None, walltime=None) - 多个标量数据

add_histogram(tag, values, global_step=None, bins='tensorflow', walltime=None, max_bins=None) - 直方图或多分位数折线图 

add_figure(tag, figure, global_step=None, close=True, walltime=None) - matplotlib图像

add_video(tag, vid_tensor, global_step=None, fps=4, walltime=None) - 视频数据

...

export_scalars_to_json 

 pil-image 转为 tensor

from PIL import Image
import numpy as np
# ...
ants_img_path = "data_for_tensorboard/train/ants_image/0013035.jpg"
img_PIL = Image.open(ants_img_path)
# 将img_path路径对应的图片对象转为numpy类型, 并赋值给image
img_array = np.array(img_PIL)

[参考]

PyTorch深度学习快速入门教程 

基于transformers的自然语言处理(NLP)入门

www.cnblogs.com/lucky-light…

blog.csdn.net/weixin_4313…

本网站的内容主要来自互联网上的各种资源,仅供参考和信息分享之用,不代表本网站拥有相关版权或知识产权。如您认为内容侵犯您的权益,请联系我们,我们将尽快采取行动,包括删除或更正。
AI教程

大模型分布式训练并行技术组合方案详解

2023-11-21 19:12:14

AI教程

Onepoint: 个性化的智能辅助工具

2023-11-21 19:21:14

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索