【知识点05】深度学习训练过程的可视化

作者:欧新宇(Xinyu OU)
开发平台:Paddle 2.1
运行环境:Intel Core i7-7700K CPU 4.2GHz, nVidia GeForce GTX 1080 Ti
版本信息:V1
本教案所涉及的数据集仅用于教学和交流使用,请勿用作商用。

最后更新:2021-10-31


深度学习的训练过程一直被认为是黑盒的,这主要是因为我们并不知道最终的结果究竟是因何而来,我们所看到的仅仅是一些浮点数的组合(张量)。然而,可视化技术为我们打开了一扇窗,让我们对深度学习有了一些可解释依据。常见的可视化技术主要包括三类:

  1. 卷积层权重可视化 通常,卷积核都是使用某种随机算法实现初始化,经过良好训练之后,这些卷积核的权值通常表现为美观、光滑的滤波器;反之,如果出现噪声图样,则可能意味着网络的训练并没有收敛,或者由于正则化强度过小导致网络出现过拟合。在低层次的卷积层中,一部分卷积核负责提取高频灰度特征,主要呈现出边缘、气泡等结构性特征,而另一部分卷积核则负责提取低频颜色特征;在高层次的卷积层中,卷积核会倾向于呈现更完整、更全面的轮廓特征、全局特征。因此,通过卷积层权值的可视化操作,可以初步判断深度学习模型的优劣。
  2. 特征图可视化 与卷积层的权重类似,在特征图可视化中,高层响应的特征图关注图像中不同细节,例如背景或主体的纹理或轮廓,可以从中选择图片的风格特征;而底层特征图变得局部且稀疏,可以用于剔除不相关内容并提取目标重要的特征。利用特征图,可以实现显著性区域的识别和利用。
  3. 训练结果可视化 训练过程的可视化主要是实时地关注训练时训练集和验证集的精度、损失值等评价指标,便于实现超参数的选择和执行早期停止策略。

本教案的V1版本主要关注训练结果的可视化,关于卷积层权重可视化和特征图可视化将在后续的V2版本中呈现。

常见的训练过程可视化主要有两种方式,第一,是利用现有的可视化工具实现,例如百度Paddle的VisualDL,谷歌的Tensorflow;第二,是自定义可视化函数,并使用python代码记录训练过程中输出的迭代次数、精度和损失值,并使用matplotlib库进行输出。

1. 自定义可视化函数

1.1 定义可视化函数

1.2 测试可视化函数

1.3 生成并保存日志数据

2. 可视化工具 —— VisualDL

建设中...