paddle之visualDL工具使用,可视化利器。

Posted 汀、

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了paddle之visualDL工具使用,可视化利器。相关的知识,希望对你有一定的参考价值。

相关链接:

【一】AI Studio 项目详解【(一)VisualDL工具、环境使用说明、脚本任务、图形化任务、在线部署及预测】PARL_汀、的博客-CSDN博客

isualDL 是一个面向深度学习任务设计的可视化工具。VisualDL 利用了丰富的图表来展示数据,用户可以更直观、清晰地查看数据的特征与变化趋势,有助于分析数据、及时发现错误,进而改进神经网络模型的设计。

目前,VisualDL 支持 scalar, image, audio, graph, histogram, pr curve, high dimensional 七个组件.

组件名称展示图表作用
Scalar折线图动态展示损失函数值、准确率等标量数据
Image图片可视化显示图片,可显示输入图片和处理后的结果,便于查看中间过程的变化
Audio音频播放播放训练过程中的音频数据,监控语音识别与合成等任务的训练过程
Graph网络结构展示网络结构、节点属性及数据流向,辅助学习、优化网络结构
Histogram直方图展示训练过程中权重、梯度等张量的分布
PR Curve折线图权衡精度与召回率之间的平衡关系,便于选择最佳阈值
High Dimensional数据降维将高维数据映射到 2D/3D 空间来可视化嵌入,便于观察不同数据的相关性

1.在训练程序使用添加如下:

from visualdl import LogWriter
#参数记录参考,程序中填写参考这个
"""
def train():
    writer=LogWriter("./log/scalar_test")
    writer1=LogWriter("./log/scalar_test1")
    
    writer.add_scalar(tag="train/loss", step=global_step, value=loss_avg)
    
    writer1.add_scalar(tag="train/precision", step=global_step, value=precision)
    writer1.add_scalar(tag="train/recall", step=global_step, value=recall)
    writer1.add_scalar(tag="train/f1", step=global_step, value=f1)
    
    with LogWriter(logdir="paddle_lenet_log/lr0.001") as writer:
        # 使用scalar组件记录一个标量数据
        if step % 10 == 0:
            # add scalar
            writer.add_scalar(tag="train/loss", step=step, value=cost)
            writer.add_scalar(tag="train/acc", step=step, value=accuracy)

"""

 分别记录loss、F1等指标

2.在本地执行相关指令、多个记录器

添加两个记录器

from visualdl import LogWriter

if __name__ == '__main__':
    value = [i/1000.0 for i in range(1000)]
    # 初始化一个记录器
    with LogWriter(logdir="./log/scalar_test/train") as writer:
        for step in range(1000):
            # 向记录器添加一个tag为`acc`的数据
            writer.add_scalar(tag="acc", step=step, value=value[step])
            # 向记录器添加一个tag为`loss`的数据
            writer.add_scalar(tag="loss", step=step, value=1/(value[step] + 1))

终端指令:

#在命令行执行:

visualdl --logdir ./log --port 8080

# 路径:(paddlenlp) C:\\Users\\admin\\Desktop\\nlp>visualdl --logdir ./log --port 8080   在log文件夹前执行

add_scalar(tag, value, step, walltime=None)

tag string  记录指标的标志,如train/loss,不能含有%

value   float   要记录的数据值

step    int 记录的步数

walltime    int 记录数据的时间戳,默认为当前时间戳

from visualdl import LogWriter

if __name__ == '__main__':
    value = [i/1000.0 for i in range(1000)]
    # 步骤一:创建父文件夹:log与子文件夹:scalar_test
    with LogWriter(logdir="./log/scalar_test") as writer:
        for step in range(1000):
            # 步骤二:向记录器添加一个tag为`train/acc`的数据
            writer.add_scalar(tag="train/acc", step=step, value=value[step])
            # 步骤二:向记录器添加一个tag为`train/loss`的数据
            writer.add_scalar(tag="train/loss", step=step, value=1/(value[step] + 1))
    # 步骤一:创建第二个子文件夹scalar_test2  
    value = [i/500.0 for i in range(1000)]
    with LogWriter(logdir="./log/scalar_test2") as writer:
        for step in range(1000):
            # 步骤二:在同样名为`train/acc`下添加scalar_test2的accuracy的数据
            writer.add_scalar(tag="train/acc", step=step, value=value[step])
            # 步骤二:在同样名为`train/loss`下添加scalar_test2的loss的数据
            writer.add_scalar(tag="train/loss", step=step, value=1/(value[step] + 1))

3.PR Curve--PR曲线组件

from visualdl import LogWriter
import numpy as np

with LogWriter("./log/pr_curve_test/train") as writer:
    for step in range(3):
        labels = np.random.randint(2, size=100)
        predictions = np.random.rand(100)
        writer.add_pr_curve(tag='pr_curve',
                            labels=labels,
                            predictions=predictions,
                            step=step,
                            num_thresholds=5)

PR Curve以折线图形式呈现精度与召回率的权衡分析,清晰直观了解模型训练效果,便于分析模型是否达到理想标准。

4.High Dimensional--数据降维组件

if __name__ == '__main__':
    hot_vectors = [
        [1.3561076367500755, 1.3116267195134017, 1.6785401875616097],
        [1.1039614644440658, 1.8891609992484688, 1.32030488587171],
        [1.9924524852447711, 1.9358920727142739, 1.2124401279391606],
        [1.4129542689796446, 1.7372166387197474, 1.7317806077076527],
        [1.3913371800587777, 1.4684674577930312, 1.5214136352476377]]

    labels = ["label_1", "label_2", "label_3", "label_4", "label_5"]
    # 初始化一个记录器
    with LogWriter(logdir="./log/high_dimensional_test/train") as writer:
        # 将一组labels和对应的hot_vectors传入记录器进行记录
        writer.add_embeddings(tag='default',
                              labels=labels,
                              hot_vectors=hot_vectors)

5.HyperParameters--超参可视化组件

from visualdl import LogWriter

# 此demo演示了两次实验的超参数记录,以第一次实验数据为例,首先在`add_hparams`接口中记录
# 超参数`hparams`的数据,再标定了稍后要记录的`metrics`名称,最后通过`add_scalar`再具体
# 记录`metrics`的数据。此处需注意`add_hparams`接口中的`metrics_list`参数需要包含`add_scalar`
# 接口的`tag`参数。
if __name__ == '__main__':
    # 记录第一次实验数据
    with LogWriter('./log/hparams_test/train/run1') as writer:
        # 记录hparams数值和metrics名称
        writer.add_hparams(hparams_dict='lr': 0.1, 'bsize': 1, 'opt': 'sgd',
                           metrics_list=['hparam/accuracy', 'hparam/loss'])
        # 通过将add_scalar接口中的tag与metrics名称对应,记录一次实验中不同step的metrics数值
        for i in range(10):
            writer.add_scalar(tag='hparam/accuracy', value=i, step=i)
            writer.add_scalar(tag='hparam/loss', value=2*i, step=i)

    # 记录第二次实验数据
    with LogWriter('./log/hparams_test/train/run2') as writer:
        # 记录hparams数值和metrics名称
        writer.add_hparams(hparams_dict='lr': 0.2, 'bsize': 2, 'opt': 'relu',
                           metrics_list=['hparam/accuracy', 'hparam/loss'])
        # 通过将add_scalar接口中的tag与metrics名称对应,记录一次实验中不同step的metrics数值
        for i in range(10):
            writer.add_scalar(tag='hparam/accuracy', value=1.0/(i+1), step=i)
            writer.add_scalar(tag='hparam/loss', value=5*i, step=i)

以上是关于paddle之visualDL工具使用,可视化利器。的主要内容,如果未能解决你的问题,请参考以下文章

部署准备1

百度首发深度学习新工具Visual DL 支持各大深度学习框架

PM利器 UML建模之Axure部件库

javaHotspot学习利器:HSDB和CLHSDB

DevOps可视化利器—Hygieia

《视搭》开源视频创作工具,保姆级搭建教程,短视频创作利器