神经网络训练可视化

TensorBoard

TensorBoard是一款强大的深度学习可视化工具,可以配合pytorch将模型细节进行可视化,本文将介绍三种初步用法。进阶查看网络卷积层等后续使用在进行介绍,单详细通过学习初步的用法后后续根据其它网络教程也很容易实现

应用安装

安装TensorBoard (按住默认最新版,老版本在可视化梯度中存在问题)
pip install TensorBoard
引用

1
2
3
from torch.utils.tensorboard import SummaryWriter
# 创建SummaryWriter类
writer=SummaryWriter()

可视化

图像可视化

imgs 是图像DataLoader类,可视化能够实现将一组batch图像进行可视化。
在进行图像可视化的时候,如果tensor数据是0到1则会自动扩大244倍,数据超过1则默认数据范围为0到244。如果图像在可视化之前还进行了额外的操作,需要进行相反的操作才能正常可视化

1
2
# images:可视化画布名称,imgsDataLoader类,steps每次训练的数据
writer.add_images('images',imgs,steps)

折线图可视化

1
writer.add_scalar('loss',loss, step)

模型可视化

模型可视化稍微不同上面两种需要在训练循环中引入

1
2
3
# 创建假的图像需要和原始图像形状相同,还需要同模型在一个device上。
img_false = torch.randn(1,3,32,32).to(device)
writer.add_graph(chutian,img_false)

查看

在终端中输入tensotboard --logdir=./返回端口号后用浏览器打开就能查看训练过程的可视化情况了

后记

tensorboard可视化还能用于可视化模型的卷积层的参数情况,通过查看参数的可视化的情况,就能轻易的发现梯度消失和梯度爆炸的问题。可视化的同时也为模型的训练过程调参提供了便利。

CAM

CAM多用于在分类问题中使用,类激活图可以显示模型在训练过程中,权重或重心在何处、如何转移,分类模型是根据哪一部分的特征进行判别的。简而言之,就是模仿人类识别物体的过程,随着模型的迭代,找到相关任务的关键部位。

参考

类激活图(CAM)代码+原理详解
TensorBoard最全使用教程:看这篇就够了