上篇文章我们讲了如何对模型进行可视化,用的keras手动绘图输出CNN训练的中途结果,本篇文章将讲述如何用PaddlePaddle新开源的VisualDL来进行可视化。在讲VisualDL之前,我们先了解一下常用的Tensorflow的可视化工具---Tensorboard。


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节点的地址’

  然后会出现以下信息:

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

  将http://127.0.1.1:6006在浏览器中打开,就可以看到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

 def start_trainer(self,X_train,Y_train,X_val,Y_val):
#获得训练器
trainer = self.get_trainer() result_lists = []
def event_handler(event):
if isinstance(event, paddle.event.EndIteration):
if event.batch_id % 10 == 0:
print "\nPass %d, Batch %d, Cost %f, %s" % (
event.pass_id, event.batch_id, event.cost, event.metrics)
if isinstance(event, paddle.event.EndPass):
# 保存训练好的参数
with open('params_pass_%d.tar' % event.pass_id, 'w') as f:
parameters.to_tar(f)
# feeding = ['x','y']
result = trainer.test(
reader=val_reader)
# feeding=feeding)
print "\nTest with Pass %d, %s" % (event.pass_id, result.metrics) result_lists.append((event.pass_id, result.cost,
result.metrics['classification_error_evaluator'])) # 开始训练
train_reader = paddle.batch(paddle.reader.shuffle(
reador.reader_creator(X_train,Y_train),buf_size=200),
batch_size=16) val_reader = paddle.batch(paddle.reader.shuffle(
reador.reader_creator(X_val,Y_val),buf_size=200),
batch_size=16) trainer.train(reader=train_reader,num_passes=20,event_handler=event_handler) #找到训练误差最小的一次结果
best = sorted(result_lists, key=lambda list: float(list[1]))[0]
print 'Best pass is %s, testing Avgcost is %s' % (best[0], best[1])
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”。不知道博客园怎么放gif,具体的图片展示就直接看官网吧

深度学习可视化工具Visual DL——“所见即所得”


总结

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

【深度学习系列】PaddlePaddle可视化之VisualDL的更多相关文章

  1. 【深度学习系列】PaddlePaddle垃圾邮件处理实战(二)

    PaddlePaddle垃圾邮件处理实战(二) 前文回顾   在上篇文章中我们讲了如何用支持向量机对垃圾邮件进行分类,auc为73.3%,本篇讲继续讲如何用PaddlePaddle实现邮件分类,将深度 ...

  2. 【深度学习系列】关于PaddlePaddle的一些避“坑”技巧

    最近除了工作以外,业余在参加Paddle的AI比赛,在用Paddle训练的过程中遇到了一些问题,并找到了解决方法,跟大家分享一下: PaddlePaddle的Anaconda的兼容问题 之前我是在服务 ...

  3. 使用腾讯云 GPU 学习深度学习系列之二:Tensorflow 简明原理【转】

    转自:https://www.qcloud.com/community/article/598765?fromSource=gwzcw.117333.117333.117333 这是<使用腾讯云 ...

  4. 【深度学习系列3】 Mariana CNN并行框架与图像识别

    [深度学习系列3] Mariana CNN并行框架与图像识别 本文是腾讯深度学习系列文章的第三篇,聚焦于腾讯深度学习平台Mariana中深度卷积神经网络Deep CNNs的多GPU模型并行和数据并行框 ...

  5. 【深度学习系列2】Mariana DNN多GPU数据并行框架

    [深度学习系列2]Mariana DNN多GPU数据并行框架  本文是腾讯深度学习系列文章的第二篇,聚焦于腾讯深度学习平台Mariana中深度神经网络DNN的多GPU数据并行框架.   深度神经网络( ...

  6. 深度学习系列 Part(3)

    这是<GPU学习深度学习>系列文章的第三篇,主要是接着上一讲提到的如何自己构建深度神经网络框架中的功能模块,进一步详细介绍 Tensorflow 中 Keras 工具包提供的几种深度神经网 ...

  7. 基于TensorFlow的深度学习系列教程 2——常量Constant

    前面介绍过了Tensorflow的基本概念,比如如何使用tensorboard查看计算图.本篇则着重介绍和整理下Constant相关的内容. 基于TensorFlow的深度学习系列教程 1--Hell ...

  8. 【深度学习系列】PaddlePaddle之手写数字识别

    上周在搜索关于深度学习分布式运行方式的资料时,无意间搜到了paddlepaddle,发现这个框架的分布式训练方案做的还挺不错的,想跟大家分享一下.不过呢,这块内容太复杂了,所以就简单的介绍一下padd ...

  9. 【深度学习系列】用PaddlePaddle和Tensorflow进行图像分类

    上个月发布了四篇文章,主要讲了深度学习中的"hello world"----mnist图像识别,以及卷积神经网络的原理详解,包括基本原理.自己手写CNN和paddlepaddle的 ...

随机推荐

  1. 高级开发层面,针对Hibernate方面面试题的总结(对其它ORM也适用)

    虽然目前mytabis用得比较多,但Hibernate相对比较容易上手,而且也有不少公司在用,所以本文就用这个举例,事实上,本文给出的面试建议也适用于各种ORM.本文摘自java web轻量级开发面试 ...

  2. 深入C#.NET数据类型

    深入C#数据类型 --不同类型的参数传递使用值传递,在方法中对参数的更改在调用后不能保留.使用ref方式传递,可以保留对参数值的更改. ---值方式参数传递和引用方式传递使用值方式(不用ref修饰)传 ...

  3. Vue-cli 创建的项目如何跨域请求

    感谢BeArchitect的技术支持 问题描述: 使用 Vue-cli 创建的项目,开发地址是 localhost:8023,需要访问 localhost:9000 上的接口 分析原因: 不同域名之间 ...

  4. Struts2思维导图

    自己感觉自己的知识不是很扎实,所以昨天留时间复习知识,昨天边复习边画了一个思维导图.不知道自己画的对不对,还没有画完.有错的地方大家请和我说.希望自己能更加牢固的记住这些知识. 不说废话,开图.图有点 ...

  5. Java贪吃蛇感想

    暑假敲代码的效率真的不高呀,一个这种小游戏从最开始构思到最后实施代码,从最开始的Demo版本到最后的第四版本,花了一个星期了.本想再更新一个版本,加入双人对战模式,还想写个AI版,可是我估计按照现在我 ...

  6. MNIST-NameError: name ‘input_data’ is not defined解决办法

    在学习TensorFlow文档教程的时候, 在MNIST入门一节,发现直接运行下载MNIST数据集的代码会报错.原代码如下: import tensorflow.examples.tutorials. ...

  7. Anaconda使用

    转自PeterYuan   序 Python易用,但用好却不易,其中比较头疼的就是包管理和Python不同版本的问题,特别是当你使用Windows的时候.为了解决这些问题,有不少发行版的Python, ...

  8. 总结Oracle8i 的UNDO表空间损坏(ORA-01092及ORA-00600【4193】)情况下的数据库不完全恢复的经历

    服务器断电重启导致备份生产环境的恢复目录库无法进行启动,提示Ora-01092例程终止.强行断开连接 查看跟踪日志: Wed Jan 10 08:41:37 2018 Errors in file d ...

  9. Hyperledger Fabric 1.0 从零开始(十二)——fabric-sdk-java应用

    Hyperledger Fabric 1.0 从零开始(十)--智能合约 Hyperledger Fabric 1.0 从零开始(十一)--CouchDB 上述两章,最近网上各路大神文章云集,方案多多 ...

  10. 关于Tsung脚本无法停止的问题

    最近,利用tsung测试cm的时候,脚本是这样配置的: <load> 28 <arrivalphase phase="1" duration="2&qu ...