在PyTorch深度学习中,最常用的模型可视化工具是Facebook(中文为脸书,目前已改名为Meta)公司开源的Visdom,本节通过案例详细介绍该模型可视化工具。

CNN可视化 feature map pytorch pytorch模型可视化工具_python

 

9.1.1 Visdom简介

Visdom可以直接接受来自PyTorch的张量,而不用转化成NumPy中的数组,从而运行效率很高。此外,Visdom可以直接在内存中获取数据,毫秒级刷新,速度很快。

Visdom的安装很简单,直接执行以下命令即可:

pip install visdom

开启服务,因为visdom本质上是一个类似于Jupyter Notebook 的Web服务器,在使用之前需要在终端打开服务,代码如下:

python -m visdom.server

正常执行后,根据提示在浏览器中输入相应地址即可,默认地址为:

http://localhost:8097/

如果出现蓝底空白的页面,并且上排有一些条形框,表示安装使用成功,如图9-1所示。

CNN可视化 feature map pytorch pytorch模型可视化工具_数据_02

图9-1  Visdom服务器界面

Visdom目前支持的图形API如下:

  1. vis.scatter:2D或3D散点图
  2. vis.line:线图
  3. vis.updateTrace:更新现有的线/散点图
  4. vis.stem:茎叶图
  5. vis.heatmap:热图地块
  6. vis.bar:条形图
  7. vis.histogram:直方图
  8. vis.boxplot:盒子
  9. vis.surf:表面重复
  10. vis.contour:等高线图
  11. vis.quiver:颤抖的情节
  12. vis.mesh:网格图

这些API的确切输入类型有所不同,尽管大多数API 的输入包含一个tensor X(保存数据)和一个可选的tensor Y(保存标签或者时间戳)。所有的绘图函数都接收一个可选参数win,用来将图画到一个特定的窗格上。每个绘图函数也会返回当前绘图的win。也可以指定绘出的图添加到哪个可视化空间的分区上。

Visdom同时支持PyTorch的tensor和Numpy的ndarray两种数据结构,但不支持Python的int、float等类型,因此每次传入时都需先将数据转成ndarray或tensor。上述操作的参数一般不同,但有两个参数是绝大多数操作都具备的:

  1. win:用于指定pane的名字,如果不指定,visdom将自动分配一个新的pane。如果两次操作指定的win名字一样,新的操作将覆盖当前pane的内容,因此建议每次操作都重新指定win。
  2. opts:选项,接收一个字典,常见的option包括title、xlabel、ylabel、width等,主要用于设置pane的显示格式。

之前提到过,每次操作都会覆盖之前的数值,但往往我们在训练网络的过程中需不断更新数值,如损失值等,这时就需要指定参数update='append'来避免覆盖之前的数值。

除了使用update参数以外,还可以使用vis.updateTrace方法来更新图,但updateTrace不仅能在指定窗格上新增一个和已有数据相互独立的痕迹,还能像update='append'那样在同一条痕迹上追加数据。

9.1.3 动手练习:识别手写数字

......

执行成功后,在visdom网页可以看到实时更新的训练过程的数据变化,每一个epoch测试数据更新一次,如图9-15所示。

CNN可视化 feature map pytorch pytorch模型可视化工具_数据_03

图9-15  实时更新的训练图

三、小结

本例使用Visdom对手写数字数据集的识别过程进行了可视化建模。

CNN可视化 feature map pytorch pytorch模型可视化工具_数据_04

 

9.2 TensorBoard

Tensorboard是TensorFlow的一个附加工具,可以记录训练过程的数字、图像等内容,以方便研究人员观察神经网络训练过程,本节通过案例介绍该模型可视化工具。

......

三、小结

本例探索了深度学习中损失和准确率之间的关系。

模型测试集和训练集上的损失曲线,如图9-23所示。

CNN可视化 feature map pytorch pytorch模型可视化工具_pytorch_05

图9-23  损失曲线

模型测试集和训练集上的准确率曲线,如图9-24所示。

CNN可视化 feature map pytorch pytorch模型可视化工具_python_06

图9-24  准确率曲线

CNN可视化 feature map pytorch pytorch模型可视化工具_pytorch_07

 

9.3 Pytorchviz

Pytorchviz是一个程序包,用于创建PyTorch执行图和轨迹的可视化,本节通过案例介绍该模型可视化工具。

......

CNN可视化 feature map pytorch pytorch模型可视化工具_python_08

图9-25  模型可视化

 

9.4 Netron

Netron也是一个支持Pytorch的可视化工具,它的开发者是微软的Lutz Roeder,操作简单快捷,就像保存文件、打开文件一样,简单高效。本节通过案例介绍模型可视化工具Netron。

CNN可视化 feature map pytorch pytorch模型可视化工具_可视化工具_09

图9-27  模型可视化

CNN可视化 feature map pytorch pytorch模型可视化工具_数据_10