PaddlePaddle可视化之VisualDL教程详解

简介: PaddlePaddle可视化之VisualDL教程详解

Tensorflow 的可视化


 Tensorboard 是 Tensorflow 自带的可视化模块,我们可以通过 Tensorboard 直观的查看神经网络的结构,训练的收敛情况等。要想掌握 Tensorboard,我们需要知道一下几点:

  • 支持的数据形式
  • 具体的可视化过程
  • 如何对一个实例使用 Tensorboard

 数据形式


(1)标量 Scalars

(2)图片 Images

(3)音频 Audio

(4)计算图 Graph

(5)数据分布 Distribution

(6)直方图 Histograms

(7)嵌入向量 Embeddings

  可视化过程


(1)建立一个 graph。

(2)确定在 graph 中的不同节点设置 summary operations。

(3)将(2)中的所有 summary operations 合并成一个节点,运行合并后的节点。

(4)使用 tf.summary.FileWriter 将运行后输出的数据都保存到本地磁盘中。

(5)运行整个程序,并在命令行输入运行 tensorboard 的指令,打开 Web 端可查看可视化的结果

 使用 Tensorborad 的实例


 这里我就不讲的特别详细啦,如果用过 Tensorflow 的同学其实很好理解,只需要在平时写的程序后面设置 summary,tf.summary.scalar 记录标量,tf.summary.histogram 记录数据的直方图等等,然后正常训练,最后把所有的 summary 合并成一个节点,存放到一个地址下面,在 Linux 界面输入一下代码:


tensorboard --logdir=‘存放的总summary节点的地址’

  然后会出现以下信息:

1 Starting TensorBoard 41on port 60062 (You can navigate to http://127.0.1.1:6006)


 将 http://127.0.1.1 在浏览器中打开,就可以看到 Web 端的可视化了


image.png


 具体的参数表示的含义可以参照官网的解释

MXNet 的可视化


MXNet 的可视化之前一直使用 mx.viz.plot_network 来构建一个神经网络图,但是后来有一位阿里的同学把 tensorboard 封装在了 mxnet 里,具体可以参照 https://github.com/dmlc/tensorboard,可以对照他写的这篇文章来看 Bring TensorBoard to MXNet。


ps:这个功能好像去年年初他们就开始搞了,看到他发的朋友圈才知道没过几个月就上线了,真效率,喜欢 mxnet 的同学可以尝试一下。


PaddlePaddle 的可视化--EventHandler


在 PaddlePaddle 发布 VisualDL 之前,我一直是用 event_handler 来可视化训练的收敛情况。我找了一段之前写的一个类里的小代码来展示如何使用 event_handler

1def start_trainer(self,X_train,Y_train,X_val,Y_val):
 2         #获得训练器
 3         trainer = self.get_trainer()
 45         result_lists = []
 6def event_handler(event):
 7             ifisinstance(event, paddle.event.EndIteration):
 8                 ifevent.batch_id % 10 == 0:
 9                     print "\nPass %d, Batch %d, Cost %f, %s" % (
10event.pass_id, event.batch_id, event.cost, event.metrics)
11ifisinstance(event, paddle.event.EndPass):
12                     # 保存训练好的参数
13                 withopen('params_pass_%d.tar' % event.pass_id, 'w') as f:
14                     parameters.to_tar(f)
15                 # feeding = ['x','y']
16                 result = trainer.test(
17                         reader=val_reader)
18# feeding=feeding)19                 print "\nTest with Pass %d, %s" % (event.pass_id, result.metrics)
2021                 result_lists.append((event.pass_id, result.cost,
22                         result.metrics['classification_error_evaluator']))
2324# 开始训练25         train_reader = paddle.batch(paddle.reader.shuffle(
26                 reador.reader_creator(X_train,Y_train),buf_size=200),
27                 batch_size=16)
2829         val_reader = paddle.batch(paddle.reader.shuffle(
30                 reador.reader_creator(X_val,Y_val),buf_size=200),
31                 batch_size=16)
3233         trainer.train(reader=train_reader,num_passes=20,event_handler=event_handler)
3435#找到训练误差最小的一次结果36     best = sorted(result_lists, key=lambda list: float(list[1]))[0]
37         print 'Best pass is %s, testing Avgcost is %s' % (best[0], best[1])
38         print 'The classification accuracy is %.2f%%' % (100 - float(best[2]) * 100)

trainer = self.get_trainer()不用管,因为之前写的一个函数叫 get_trainer,你可以先定义 trainer,然后放在这里,后面设一个空列表存放每次训练的结果,我这个代码里叫 result_lists,然后定义 event_handler 函数,在开始训练,这样每次训练的结果都会传入 result_lists 这个列表里面,最后进行排序,把最优结果放到 best 里,输出就可以。最后用 event_handler_plot 画图,输出如下收敛的图:

86c5cfcecb8edab0bc516d50a9d622ec.png


但是这样不能观察到神经网络在训练过程中的每个神经元的具体变化情况,不如 tensorboard 的功能多,只能看到我们在训练过程中的 loss 下降的情况,训练是否收敛等。


PaddlePaddle 的新版可视化工具--VisualDL


大概就在上周,1.16 日,PaddlePaddle 和 Echarts 团队练手打造了 VisualDL 可视化工具 ,我试用了以后发现和 tensorborad 的功能好像!简单说说特性:


  • 支持 Scaler 打点数据展示,可将训练信息以折线图的形式展现出来,方便观察整体趋势,还能在同一个可视化视图中呈现多条折线,方便用户对比分析。
  • 支持 Image 图片展示可轻松查看数据样本的质量,也可以方便地查看训练的中间结果,例如卷积层的输出或者 GAN 生成的图片。
  • 支持 Histogram 参数分布展示功能,方便用户查看参数矩阵中数值的分布曲线,并随时观察参数数值分布的变化趋势。
  • 支持 Graph 查看深度神经网络的模型结构。


这样一看,其实基本上实现了 tensorboard 的功能,或者应该简称“Bring TensorBorad To PaddlePaddle”。


总结


总的来说,Tensorboard 是一个非常好的可视化工具,mxnet 原来只能可视化神经网络结构图,paddlepaddle 原来只能看 loss 下降的训练收敛图,但是后来 mxnet 把 tensorborad 搞进去了,paddlepaddle 发布了一个新的工具 VisualDL,实现了 Tensorborad 的功能,还是非常厉害的!大家可以多体验体验,这样就不用像上篇文章手动的去画每个网络结果中间的输出结果图,直接用 VisualDL 的 Image 展示就可以了,更加方便我们理解模型,观察模型训练的过程,简单来说,让我们不透明的“炼丹术”变得更加透明清楚了~

相关文章
|
4月前
|
机器学习/深度学习 人工智能 API
百度飞桨(PaddlePaddle)- 张量(Tensor)
百度飞桨(PaddlePaddle)- 张量(Tensor)
79 3
百度飞桨(PaddlePaddle)- 张量(Tensor)
|
4月前
|
人工智能 异构计算 Python
百度飞桨(PaddlePaddle)安装
百度飞桨(PaddlePaddle)安装
133 0
|
6月前
|
机器学习/深度学习 存储 自然语言处理
PaddlePaddle
【6月更文挑战第26天】PaddlePaddle。
98 10
|
7月前
|
机器学习/深度学习 数据采集 API
Paddle 点灯人 之 10分钟快速上手Paddle
Paddle 点灯人 之 10分钟快速上手Paddle
|
API 异构计算
使用OpenVINO 和 PaddlePaddle 进行图像分类预测
使用OpenVINO 和 PaddlePaddle 进行图像分类预测
288 0
使用OpenVINO 和 PaddlePaddle 进行图像分类预测
|
机器学习/深度学习 人工智能 PyTorch
Paddle 点灯人 之 Paddle介绍
首先,我想讲一下,为什么我想学习paddle,或者说为什么要学习paddle。百度已经很早就做paddle了,这可以说是国内最好的学习框架了,他可以说到现在已经非常成熟了,相对于pytorch,他的历史确实没有那么悠久,并且很多人都在用pytorch而不是paddle。不过paddle在国内来说,是比较好的,很多东西都有简单的部署,可以更好的使用,所以我也想学习paddle,也为了有更多机会。
Paddle 点灯人 之 Paddle介绍
|
机器学习/深度学习 移动开发 人工智能
花书线性回归-PaddlePaddle版本
花书线性回归-PaddlePaddle版本
114 0
花书线性回归-PaddlePaddle版本
|
机器学习/深度学习 数据处理 计算机视觉
飞桨(paddlepaddle )入门图像分类最强指南
飞桨(paddlepaddle )入门图像分类最强指南
169 0
飞桨(paddlepaddle )入门图像分类最强指南
|
机器学习/深度学习 存储 数据可视化
paddle2.0之 paddle Tensor 第一集
paddlepaddle2.0新的起航,是不是有新手小伙伴对这些很迷茫呢? 传说中的:可以new一个对象的python还没有到创建对象的能力。
325 0
paddle2.0之 paddle Tensor 第一集
|
机器学习/深度学习 人工智能 计算机视觉
基于PaddlePaddle的宝石分类
基于PaddlePaddle的宝石分类
259 0
基于PaddlePaddle的宝石分类