50 TensorBoard的安装和使用
在深度学习建模过程中,为了能够快速绘制模型基本结构、观察模型评估指标伴随训练过程的动态变化情况,当然也为了能够观察图像数据,我们可以使用TensorBoard
工具来进行Pytorch
深度学习模型的可视化展示。
Tensorboard
原本是TensorFlow
的可视化工具,而目前在TensorboardX
工具的加持下,其他深度学习计算框架也可使用TensorBoard
工具进行可视化操作了。在Pytorch
原生的可视化工具不够友好的情况下,我们更推荐使用TensorboardX
来实现Pytorch
的建模可视化。
虽然我们可以在torch.util
模块中调用Tensorboard
,但Tensorboard
并不和Pytorch
同步维护,要使用Tensorboard
,需单独安装。
# 随机模块
import random
# 绘图模块
import matplotlib as mpl
import matplotlib.pyplot as plt
# numpy
import numpy as np
# pytorch
import torch
from torch import nn,optim
import torch.nn.functional as F
from torch.utils.data import Dataset,TensorDataset,DataLoader
50.1 安装TensorboardX
和python
安装第三方库一样,直接在命令行中安装即可。已经安装了TensorFlow
的同学,在安装TensorFlow
的过程中会自动安装Tensorboard
,后续可以直接使用。当然,只安装了PyTorch
的同学可根据以下步骤单独TensorboardX
组件:
-
Step 1.打开cmd命令行
-
Step 2.使用pip进行安装
pip install tensorboardX
- Step 3.安装tensorboard
pip install tensorboard
- Step 4.测试安装结果
导入相关的包,若能顺利导入,则证明安装成功
from torch.utils.tensorboard import SummaryWriter
50.2 SummaryWriter类与Tensorboard的基本使用
在进行建模过程可视化展示的过程,核心使用的类就是SummaryWriter
类,通过该类的使用,我们可以记录关键运算关系、模型数值指标等,进而可以进行展示。
不过,考虑到真实生产环境中,大规模深度学习模型都是部署在服务器上运行的,我们无法像在本地IDE
上一边输入数据一边绘图观测结果,我们只能将需要记录的关键结果记录下来并保存在某个文件里,然后再在本地或者服务器上开启某项服务读取该文件保存的信息。因此,整个过程会比在本地绘图稍微复杂,但确是真实生产环境中的主流操作。
使用SummaryWriter
进行记录并读取结果的一般过程如下:
实例化summarywriter
writer = SummaryWriter(log_dir = 'test')
实例化的过程中需要确定保存路径,当保存在主目录文件内时,只需输入文件夹名称即可。当文件夹不存在时,系统会自动创建一个。每次实例化一次SummaryWriter,就会在对应文件夹内新生成一个文件。单个文件夹内允许存在多个文件,在实际读取过程中会一次性读取文件夹内全部文件。
writer.log_dir # 通过log_dir查看summary对象记录文件的位置
# output :
'test'
记录数据
for i in range(10):
writer.add_scalar('mul', i*i, i)
此处我们使用了add_scalar
方法进行数据记录,该方法用于记录一组组标量,在实际记录过程中,通过迭代的方式逐个增加。其中,第一个参数代表改组记录的名称(也就是生成图像的名称),第二个参数代表y
值,第三个参数代表x
值。完成记录后,即可读取文件查看记录结果。除此以外,常用的还有add_graph
方法用于记录深度学习建模流程。
启动服务读取文件
接下来,在本地启动服务,读取刚刚生成的记录文件。同样,我们可以在jupyter
中的命令行直接启动服务。
-
打开终端
-
输入
tensorboard --logdir="test"
命令行中内容,其中
tensorboard
为指令关键词,--logdir
参数输入记录文件夹地址(注意是文件夹地址而不是文件夹内的文件地址)。在默认情况下,系统会自动启动6006
端口,可用于Web
调用服务,这种调用方法类似于jupyter
服务也是通过Web
调用的,jupyter
端口默认是8888
。需要注意的是,上述命令中,是先将当前操作目录转移至test
文件目录下,然后在调用tensorboard
命令时只需要在--logdir
参数位输入文件名称即可。无论是在--logdir
参数位输入完整的文件路径,还是先将当前操作目录转移到对应目录下再直接输入文件名,都可以直接调用服务。 -
进入6006端口页面
直接点击也可以
接下来即可对图形进行简单操作,最基本的,我们可以按住alt键,滚动鼠标滚轮对其进行缩放,以及通过鼠标左键对其进行拖拽。
至此,简单的跑通一个使用Tensorboard
的使用实验顺利完成,在后续的建模过程中,我们还将进一步熟悉Tensorboard
的其他功能。值得一提的是,尽管目前看起来是Tensorboard
只记录了一张折线图,但实际上add_scalar
方法核心应用场景是用于记录模型运行过程中,随着迭代次数增加一些数值指标的变化情况,如loss
值、准确率值等等等等。无论如何,我们需要知道,Tensorboard
的核心应用场景是深度学习建模过程的可视化展示,若只用其进行绘图,则有些大材小用了。