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 端的可视化了

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


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 画图,输出如下收敛的图:

  但是这样不能观察到神经网络在训练过程中的每个神经元的具体变化情况,不如 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 展示就可以了,更加方便我们理解模型,观察模型训练的过程,简单来说,让我们不透明的“炼丹术”变得更加透明清楚了~

<think>好的,我需要回答用户关于PaddlePaddle可视化工具和方法的查询。首先,我得回忆一下PaddlePaddle相关的文档和工具。记得PaddlePaddle是百度开源的深度学习框架,它的可视化工具可能包括VisualDL,这是一个专门的可视化分析工具。 接下来,我应该先介绍VisualDL的基本信息,比如它支持哪些功能,比如标量、图像、模型结构等的可视化。然后,需要说明如何安装和使用,比如通过pip安装,以及如何在代码中引入LogWriter,添加不同的组件。可能还需要提供一个简单的代码示例,展示如何记录训练损失和准确率。 另外,用户可能还想知道其他可视化方法,比如与TensorBoard的集成,或者使用Matplotlib自定义可视化。虽然VisualDL是主要的工具,但兼容性和其他库的使用也是重要信息。需要提到PaddlePaddle是否支持TensorBoard,或者是否有其他第三方库可以使用。 还要考虑用户的使用场景,比如模型训练时的实时监控,模型结构检查,或者结果分析。可能需要分点说明不同工具适用的场景,帮助用户根据需求选择合适的方法。 最后,生成相关问题时要围绕PaddlePaddle可视化的扩展,比如如何集成到工作流中,高级功能,性能调优,或者与其他框架的对比。确保问题对用户进一步探索有帮助。 需要检查信息是否准确,比如VisualDL的安装命令是否正确,组件名称是否有更新。可能需要查阅最新的文档确认,但根据记忆,VisualDL的使用方式大致如此。代码示例要确保语法正确,比如LogWriter的使用和添加标量、图像的方法是否正确。 总结回答结构:先介绍VisualDL,包括安装、使用步骤和示例代码;然后讨论其他方法如TensorBoard和Matplotlib;最后分应用场景说明不同工具的使用。确保每个部分清晰,并添加引用标识。生成的相关问题要覆盖工具选择、集成、功能对比等方面。</think>以下是关于PaddlePaddle可视化工具和方法的详细介绍: --- ### PaddlePaddle可视化工具 PaddlePaddle主要提供**VisualDL**工具,支持训练过程可视化、模型结构展示、高维数据降维分析等功能[^1]。 #### 1. VisualDL 核心功能 - **标量可视化**:记录训练损失、准确率等指标 - **图像可视化**:展示输入数据或特征图 - **模型结构可视化**:生成计算图 - **直方图**:监控参数分布变化 - **PR曲线**:评估分类模型性能 #### 2. 安装与使用 ```bash pip install visualdl ``` 代码示例: ```python from visualdl import LogWriter with LogWriter(logdir="./log") as writer: # 记录标量 writer.add_scalar(tag="loss", step=0, value=0.5) # 记录图像 writer.add_image(tag="input", step=0, img=image_data) ``` #### 3. 模型结构可视化 使用`paddle.summary`生成网络结构: ```python import paddle model = paddle.vision.models.LeNet() paddle.summary(model, (1, 1, 28, 28)) ``` --- ### 其他可视化方法 1. **TensorBoard兼容** 通过`paddle.utils.install_check`检查TensorBoard支持,可将日志转为TensorBoard格式[^2] 2. **Matplotlib自定义可视化** 提取中间层特征后手动绘图: ```python import matplotlib.pyplot as plt features = model.get_layer_output("conv1") plt.imshow(features[0][0]) ``` --- ### 应用场景对比 | 工具 | 适用阶段 | 优势 | |---------------|--------------|-------------------------| | VisualDL | 训练实时监控 | 集成度高,支持动态更新 | | 模型结构可视化 | 调试阶段 | 快速发现网络连接错误 | | Matplotlib | 结果分析 | 高度自定义,支持复杂图表 | ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员奇奇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值