TensorBoard最全使用教程:看这篇就够了

  • 前言
  • 靠,天天学,天天学,就是一个工具人!!!
  • 一、什么是 TensorBoard?
  • 二、如何安装 TensorBoard
  • 三、如何查看是否安装TensorBoard
  • 三、启动 TensorBoard(仅仅是启动)
  • 四、TensorBoard 仪表板都有哪些玩意(前四个对于cv来说用的比较多)
    • 1、TensorBoard Scalars
    • 2、TensorBoard Images
    • 3、TensorBoard Graphs
    • 4、TensorBoard Distributions and Histograms 分布和直方图
    • 5、TEXT
  • 五、将 TensorBoard 与 PyTorch 结合使用
  • 六、Tensorboard自己使用(摸索状态,慢慢更新使用细节)
    • 1、初次使用tensorboard绘制loss和acc曲线出现时间线错乱的情况如下图:
  • 五级标题
  • 参考链接

前言

靠,天天学,天天学,就是一个工具人!!!

机器学习通常涉及在训练期间可视化和度量模型的性能。 有许多工具可用于此任务。 在本文中,我们将重点介绍 TensorFlow 的开源工具套件,称为 TensorBoard,虽然他是TensorFlow 的一部分,但是可以独立安装,并且服务于Pytorch等其他的框架。

一、什么是 TensorBoard?

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

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

TensorBoard算是包含在 TensorFlow中的一个子服务。 TensorFlow 库是一个专门为机器学习应用程序设计的开源库。 Google Brain 于 2011 年构建了较早的 DistBelief 系统。随着其用户群的快速增长,它被简化并重构为我们现在称为 Tensorflow 的库。 TensorFlow 随后于 2015 年向公众发布。TensorBoard刚出现时只能用于检查TensorFlow的指标和TensorFlow模型的可视化,但是后来经过多方的努力其他深度学习框架也可以使用TensorBoard的功能,例如Pytorch已经抛弃了自家的visdom(听到过这个名字的人应该都不多了吧)而全面支持TensorBoard。

二、如何安装 TensorBoard

TensorBoard 包含在 TensorFlow 库中,所以如果我们成功安装了 TensorFlow,我们也可以使用 TensorBoard。 要单独安装 TensorBoard 可以使用如下命令:

pip install tensorboard

需要注意的是:因为TensorBoard 依赖Tensorflow ,所以会自动安装Tensorflow的最新版

三、如何查看是否安装TensorBoard

打开pycharm,在python Console中输入以下代码:

from torch.utils.tensorboard import SummaryWriter

如不提示错误,则安装成功,若提示以下错误:

TensorBoard logging requires TensorBoard version 1.15 or above

三、启动 TensorBoard(仅仅是启动)

要启动 TensorBoard,打开终端或命令提示符并运行:

1、首先进入你运行代码的环境
2、然后使用下面这条命令,路径是log文件的上一个目录,你如下面这个的是flower_experment的(相对)路径
(如果显示说找不到数据啥的,直接使用绝对路径一般就能解决)
一系列tensorboard错误以及解决方法:

tensorboard --logdir=


举个例子(相对路径更好用):

将 directory_name 标记替换为保存数据的目录。 默认是“logs”。

运行此命令后,我们将看到以下提示:

Serving TensorBoard on localhost; to expose to the network, use a proxy or pass –bind_allTensorBoard 2.2.0 at http://localhost:6006/ (Press CTRL+C to quit)

这说明 TensorBoard 已经成功上线。 我们可以用浏览器打开http://localhost:6006/查看。

当页面打开时,我们将看到如下大概内容(因为没训练几轮,所以这个参数没什么变化):

四、TensorBoard 仪表板都有哪些玩意(前四个对于cv来说用的比较多)

TensorBoard 仪表板由用于可视化数据的不同组件组成。 我们将研究几个常用的组件。
上面的图只是部分可视化功能,全部可视化功能还有很多很多,如下:

1、TensorBoard Scalars

机器学习过程需要跟踪与模型性能相关的不同指标。这对于快速发现问题并确定模型是否过度拟合等非常重要。

使用 TensorBoard 的 Scalars Dashboard,可以可视化这些指标并更轻松地调试模型。第一个示例,在 MNIST 数据集上绘制模型的损失和准确性,使用的就是Scalars。

Scalars这个面板是最最长常用的面板,主要用于将神经网络训练过程中的acc(训练集准确率)val_acc(验证集准确率),loss(损失值),weight(权重)等等变化情况绘制成折线图。

它左边有一些参数设置:

Ignore outlines in chart scaling(忽略图表缩放中的轮廓),可以消除离散值

p1:是否显示数据下载链接。
p2:图表平滑过程中是否忽略异常点。
p3:控制每个run点信息的显示顺序。
p4:代表平滑系数,值越大平滑越多。
p5:横坐标刻度值。STEP:默认选项,横轴显示的是训练迭代次数。RELATIVE:这个相对指的是相对时间,相对于训练开始的时间,也就是说训练用时 ,单位是小时。WALL:指训练的绝对时间。
p6:选择要显示的内容,此处支持正则表达式。
p7:查看大图。
p8:是否对y轴进行对数化处理。
p9:如果拖动或缩放了坐标轴,点击后回到原始位置。
p10:下载显示的数据。
补充:在标量图中拉一个矩形,则把矩形内的数据放大展示。

2、TensorBoard Images

在处理图像数据时,如果希望查看数据查找问题,或者查看样本以确保数据质量,则可以使用 TensorBoard 的 Image Summary API。

3、TensorBoard Graphs

所有模型都可以看作是一个计算图。 有时很难通过单独查看代码来了解模型的体系结构。对其进行可视化可以很容易看到模型的结构, 也能够确保使用的架构是我们想要或设计的。
其实就是可以查看模型结构

4、TensorBoard Distributions and Histograms 分布和直方图

TensorBoard 分布和直方图是跟踪模型另一种好方法。 使用官方提供的回调,在训练后TensorBoard 上会显示几个选项。 如果我们转到Distributions 选项卡,将看到如下图:

这组图表显示了构成模型的张量。 在每个图的水平轴上显示 epoch 数,在垂直轴上显示了每个张量的值。 这些图表基本上显示了这些张量如何随着训练的进行而随时间变化。 较暗的区域显示值在某个区域停留了更长的时间(没更新)。 如果担心模型权重在每个epoch 都没有正确更新,可以使用此选项发现这些问题。

我们在Histograms选项上看到了一组不同的图表,它们表示模型的张量。

这些图显示了模型中张量的不同视图。每个图都有五个相互堆叠的直方图,代表训练过的五个epoch中的每一个。它们显示了张量权重倾向于集中在哪个区域的信息。这对于调试模型的行为,发现异常非常有用。

5、TEXT

文本是创建机器学习模型时常用的数据类型。 很多时候,很难将文本数据可视化。 TensorBoard可以使用 Text Summary API 轻松地可视化文本数据。 让我们看看它是如何工作的。

TensorBoar的Text 选项卡中输入的文本。

五、将 TensorBoard 与 PyTorch 结合使用

PyTorch 是另一个深受研究人员欢迎的深度学习框架。 PyTorch 现在也已经支持 TensorBoard了。

在使用 TensorFlow 时,使用 Summary API 创建了将数据记录到 logdir 文件夹的对象。 在使用 PyTorch 时,官方也提供了类似的API。

# Import the summary writer from torch.utils.tensorboard import SummaryWriter# Create an instance of the object writer = SummaryWriter()

这样就可以使用与 TensorFlow 相同的方式处理的相同 MNIST 数据集。(这只是示例代码,并不能运行)

import torch import torchvision from torchvision import datasets, transforms# Compose a set of transforms to use later on transform = transforms.Compose([ transforms.ToTensor(),transforms.Normalize((0.5,), (0.5,)) ])# Load in the MNIST dataset trainset = datasets.MNIST( 'mnist_train',train=True,download=True,transform=transform )# Create a data loader trainloader = torch.utils.data.DataLoader( trainset,batch_size=64,shuffle=True )# Get a pre-trained ResNet18 model model = torchvision.models.resnet18(False)# Change the first layer to accept grayscale images model.conv1 = torch.nn.Conv2d(1, 64, kernel_size=7, stride=2, padding=3, bias=False)# Get the first batch from the data loader images, labels = next(iter(trainloader))# Write the data to TensorBoard grid = torchvision.utils.make_grid(images) writer.add_image('images', grid, 0) writer.add_graph(model, images) writer.close()

运行此程序后,转到 TensorBoard 并查看保存的输出。

六、Tensorboard自己使用(摸索状态,慢慢更新使用细节)

1、初次使用tensorboard绘制loss和acc曲线出现时间线错乱的情况如下图:


很大一个原因可能是在一个文件夹下有多个log文件一块显示了,删掉试试

使用时间戳,每一次运行会建立对应时间的log文件,这样不会在一个文件夹中出现多个log文件,方便查看,参考链接

 # TensorBoardproject_path = "F:\py_project_professional\dxp_project\Rsenet34_curvature classification"name = "ResNet34_result"tb_writer_summary_path = os.path.join(project_path, "run", name, "Logs")current_time = time.strftime("%Y%m%d-%H%M%S", time.localtime())log_dir = os.path.join(tb_writer_summary_path, current_time)tb_writer = SummaryWriter(log_dir=log_dir, comment=name)# # 于将训练过程中的各种信息写入 TensorBoard 日志文件,以便进行可视化和分析。# # log_dir:用于指定 TensorBoard 日志文件的保存路径,即 tb_writer_summary_path 变量所指定的路径。# # comment:一个可选的字符串,用于为日志文件添加一个注释,可以用于区分不同的日志文件。# # 在这里,该参数指定了一个名为 args.name 的注释,该值可能是从命令行参数中传递过来的。# # parser.add_argument('--name', type=str, default='case5_result')


效果大概就是下图这样

五级标题

参考链接

TensorBoard最全使用教程:看这篇就够了:https://zhuanlan.zhihu.com/p/471198169