visualDL(一)scalar标量图
目录
1.visualDL简介
2.用Scalar图可视化损失和精度
2.1记录接口
2.2使用核心代码
3.在AI Studio中体验
3.1流程
3.2训练MNIST识别模型
3.2.1定义数据和模型等
3.2.2训练并记录日志
3.2.3可视化
1.visualDL简介
VisualDL是一个面向深度学习任务设计的可视化工具。VisualDL 利用了丰富的图表来展示数据,用户可以更直观、清晰地查看数据的特征与变化趋势,有助于分析数据、及时发现错误,进而改进神经网络模型的设计。
目前,VisualDL 支持 scalar, image, audio, graph, histogram, pr curve, high dimensional 七个组件。
- Scalar 折线图 动态展示损失函数值、准确率等标量数据
- Image 图片可视化 显示图片,可显示输入图片和处理后的结果,便于查看中间过程的变化
- Audio 音频可视化 播放训练过程中的音频数据,监控语音识别与合成等任务的训练过程
- Graph 网络结构 展示网络结构、节点属性及数据流向,辅助学习、优化网络结构
- Histogram 直方图 展示训练过程中权重、梯度等张量的分布
- PR Curve 折线图 权衡精度与召回率之间的平衡关系
- High Dimensional 数据降维 将高维数据映射到 2D/3D 空间来可视化嵌入,便于观察不同数据的相关性
2.用Scalar图可视化损失和精度
Scalar 组件的输入数据类型为标量,该组件的作用是将训练参数以折线图形式呈现。将损失函数值、准确率等标量数据作为参数传入 scalar 组件,即可画出折线图,便于观察变化趋势。
2.1记录接口
add_scalar(tag, value, step, walltime=None)
参数 格式 含义
tag string 记录指标的标志,如train/loss,不能含有%
value float 要记录的数据值
step int 记录的步数
walltime int 记录数据的时间戳,默认为当前时间戳
*注意tag的使用规则为:
- 第一个
/
前的为父tag,并作为一栏图片的tag - 第一个
/
后的为子tag,子tag的对应图片将显示在父tag下 - 可以使用多次
/
,但一栏图片的tag依旧为第一个/
前的tag
2.2使用核心代码
Step1 训练代码中增加 Loggers 来记录不同种类的数据.
Step2 训练过程中插入数据打点语句,将结果储存至日志文件中
方式一:
from visualdl import LogWriterif __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))
方式二:
# 如果不想使用上下文管理器`with`,可拆解为以下几步完成:
"""
writer = LogWriter(logdir="./log/scalar_test/train")writer.add_scalar(tag="acc", step=1, value=0.5678)
writer.add_scalar(tag="acc", step=2, value=0.6878)
writer.add_scalar(tag="acc", step=3, value=0.9878)writer.close()
"""
2.3启动服务
在命令行执行 visualdl --logdir ./log --port 8080,
接着在浏览器打开http://127.0.0.1:8080
,即可查看以下折线图。
支持在Python脚本中启动VisualDL面板,接口如下:
visualdl.server.app.run(logdir,model="path/to/model",host="127.0.0.1",port=8080,cache_timeout=20,language=None,public_path=None,api_only=False,open_browser=False)
如:
from visualdl.server import appapp.run(logdir="./log")
3.在AI Studio中体验
3.1流程
Step1 训练代码中增加 Loggers 来记录不同种类的数据. 注意我们的logdir = "./log"
, 即需要把log目录放到/home/aistudio/log
.
Step2 训练过程中插入数据打点语句,将结果储存至日志文件中
Step3 切换到「可视化」页签,指定日志文件与模型文件(不指定日志文件无法启动VisualDL)
3.2训练MNIST识别模型
3.2.1定义数据和模型等
from visualdl import LogWriter
import paddle
from paddle.vision.transforms import ToTensor
from paddle.io import DataLoaderbatch_size = 20
num_epoch = 10#数据加载
train_data = paddle.vision.datasets.MNIST(mode='train', transform=ToTensor())
test_data = paddle.vision.datasets.MNIST(mode='test', transform=ToTensor())
train_loader = DataLoader(train_data, batch_size=batch_size, shuffle=True)
test_loader = DataLoader(test_data, batch_size=batch_size, shuffle=True)#模型、优化器和损失精度的定义
model = paddle.vision.models.LeNet()
opt = paddle.optimizer.SGD(learning_rate=1e-3, parameters=model.parameters())
loss = paddle.nn.CrossEntropyLoss()
acc_fn = paddle.metric.accuracynum_batch_train = int(len(train_data)/batch_size) + 1
num_batch_test = int(len(test_data)/batch_size) + 1
3.2.2训练并记录日志
with LogWriter(logdir='./log/scalar_test/train') as writer:for epoch in range(num_epoch):model.train()for id, data in enumerate(train_loader):image = data[0]label = data[1]prediction = model(image)l = loss(prediction, label)acc = acc_fn(prediction, label)opt.clear_grad()l.backward()opt.step()writer.add_scalar(tag='train/loss', step=epoch*num_batch_train+id, value=l)writer.add_scalar(tag='train/acc', step=epoch*num_batch_train+id, value=acc)model.eval()for id, data in enumerate(test_loader):image = data[0]label = data[1]prediction = model(image)l = loss(prediction, label)acc = acc_fn(prediction, label)writer.add_scalar(tag='test/loss', step=epoch*num_batch_test+id, value=l)writer.add_scalar(tag='test/acc', step=epoch*num_batch_test+id, value=acc)
可以看到 writer.add_scalar()函数中的tag分为两个主tag,分别是train和test,每个主标签下又设置了两个子标签loss和acc。由于是双重循环,记录步骤step参数要做到不重叠,因此每一轮的id要加上轮数epoch*总数num_batch。
3.2.3可视化
visualDL(一)scalar标量图相关推荐
- 论文绘图——标量图篇
首先说下我对论文中的标量图(位图)的理解,需要借助其它软件生成的基础图和实验代码运行结果图.我觉得只有这两类图按标量图绘制.其它可以自己画的建议使用矢量图(展示效果更清晰). 一.对于方法描述需要的示 ...
- 位图(标量图)和矢量图的区别
FROM 義字當頭 http://blog.163.com/lee_020/blog/static/12475560201275113146796/ 1.位图图像(bitmap) 亦称为点阵图像或绘制 ...
- 【一】AI Studio 项目详解【(一)VisualDL工具、环境使用说明、脚本任务、图形化任务、在线部署及预测】PARL
相关文章 [一]-环境配置+python入门教学 [二]-Parl基础命令 [三]-Notebook.&pdb.ipdb 调试 [四]-强化学习入门简介 [五]-Sarsa&Qlear ...
- [Perl语法篇] 数据类型:标量$Scalar
I.知识点概要: 1.标量(数字型.字符型) 1.标量$Scalar 标量是用于存放一个值的变量,这个值可以是数字,也可以是字符串(其实数字就是字符串). Perl通过变量前的"魔符&quo ...
- python求语音信号短时能量、短时过零率、语谱图
python语音信号处理(二) 一.短时能量 短时能量主要用于区分浊音段和清音段,因为浊音时E(i)值比清音时大得多:区分声母与韵母的分界和无话段与有话段分界. 计算第i帧语音信号yi(n)的短时能量 ...
- 机器学习中的标量、向量、矩阵、和张量的概念
在线性代数中,我们必须掌握几个核心概念:标量.向量.矩阵和张量,它们是构成线性代数学科的基石. 标量 (Scalar) 标量其实就是一个独立存在的数,比如在线性代数中一个实数 5 就可以被看作一个标量 ...
- [WPF]WPF中材质制作——图片和矢量图之争
如果要做下面这样的一个东西作为背景.你会如何做呢? 图1. 目标背景效果 方案一,用PS画出来.然后把这个PNG图片作为背景色.这个方案可以,但是如果想让这个线的颜色可配置呢?如何线的粗细不确定呢?无 ...
- 【TensorFlow】——不同shape的tensor在神经网络中的应用(scalar,vector,matrix)
目录 1.scalar--标量 1)在神经网络中存在的场景 2)one_hot编码 3)举例应用 2.vector--向量 3.matrixs--矩阵 4.dim=3的tensor 5.dim ...
- openFOAM中的Scalar
位于路径src/OpenFOAM/primitives/Scalar 标量,其实就是浮点数.但是浮点数具有不同的精度,最终文件将根据宏的设置决定程序使用哪种精度 文件依赖关系如下: 注意这里大小写的s ...
最新文章
- Linux 准确查找结构体定义位置
- CEPH给用户创建读写权限
- WinCE中串口驱动及接口函数介绍
- Android Intent 用法总结
- Principle for Mac:让你五分钟即可制作出一个具有完整交互动画的原型
- c语言 枚举类型 uint32_最全面C语言数据基本数据类型解析
- adobe reader XI 打开后闪退(或过几秒后自动退出)【解决方案】
- 生产订单管理系统软件哪家好?
- operator重载运算符
- 【kindle笔记】之 《犬夜叉》-2017-12-26
- dnf剑魂buff等级上限_DNF:心悦专区重新开放,道具及等级上限调整
- html打气球游戏,打气球.html
- python 问题Some characters could not be decoded, and were replaced with REPLACEMENT CHARACTER.
- 计算机屏幕发蓝,电脑的颜色突然变成蓝色了,屏幕,什么颜色都和以
- codeforces 757e Bash Plays with Functions
- STM32-外部中断详解
- 彻底关闭FF新闻资讯
- 学习USART自闭实录(stm32F411RE)Stm32cubemx
- LiteOS通信模组教程04-深度剖析LiteOS的AT框架
- 第十节 Java工具包-Collections 流--lambada表达式