上篇文章我们讲了如何对模型进行可视化,用的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节点的地址’

  然后会出现以下信息:

1 Starting TensorBoard 41 on port 6006
2 (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

1 defstart_trainer(self,X_train,Y_train,X_val,Y_val):2         #获得训练器
3         trainer =self.get_trainer()4
5         result_lists =[]6         defevent_handler(event):7             ifisinstance(event, paddle.event.EndIteration):8                 if event.batch_id % 10 ==0:9                     print "\nPass %d, Batch %d, Cost %f, %s" %(10 event.pass_id, event.batch_id, event.cost, event.metrics)11             ifisinstance(event, paddle.event.EndPass):12                     #保存训练好的参数
13                 with open('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)20
21 result_lists.append((event.pass_id, result.cost,22                         result.metrics['classification_error_evaluator']))23
24         #开始训练
25         train_reader =paddle.batch(paddle.reader.shuffle(26                 reador.reader_creator(X_train,Y_train),buf_size=200),27                 batch_size=16)28
29         val_reader =paddle.batch(paddle.reader.shuffle(30                 reador.reader_creator(X_val,Y_val),buf_size=200),31                 batch_size=16)32
33         trainer.train(reader=train_reader,num_passes=20,event_handler=event_handler)34
35     #找到训练误差最小的一次结果
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”。不知道博客园怎么放gif,具体的图片展示就直接看官网吧

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


总结

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

转载于:https://www.cnblogs.com/charlotte77/p/8358194.html

【深度学习系列】PaddlePaddle可视化之VisualDL相关推荐

  1. 【深度学习系列】——神经网络的可视化解释

    这是深度学习系列的第三篇文章,欢迎关注原创公众号 [计算机视觉联盟],第一时间阅读我的原创!回复 [西瓜书手推笔记] 还可获取我的机器学习纯手推笔记! 深度学习系列 [深度学习系列]--深度学习简介 ...

  2. python系列文章(基础,应用,后端,运维,自动化测试,爬虫,数据分析,可视化,机器学习,深度学习系列内容)

    python基础教程 python基础系列教程--Python的安装与测试:python解释器.PyDev编辑器.pycharm编译器 python基础系列教程--Python库的安装与卸载 pyth ...

  3. 最全深度学习训练过程可视化工具(附github源码)

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 Datawhale干货 作者:Edison_G,来源:计算机视觉研究院 编辑丨极市平台 ...

  4. DL之paddlepaddle:百度深度学习框架paddlepaddle飞桨的简介、安装、使用方法之详细攻略

    DL之paddlepaddle:百度深度学习框架paddlepaddle飞桨的简介.安装.使用方法之详细攻略 目录 paddlepaddle百度深度学习框架的简介 1.飞桨全景图与四大领先技术 2.丰 ...

  5. 深度学习系列:深度学习在腾讯的平台化和应用实践

    深度学习系列:深度学习在腾讯的平台化和应用实践(一) 莫扎特 2015-01-04 6:05:13 大数据技术 评论(0) 深度学习是近年机器学习领域的重大突破,有着广泛的应用前景.随着Google公 ...

  6. 的训练过程_最全深度学习训练过程可视化工具(附github源码)

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 Datawhale干货 作者:Edison_G,来源:计算机视觉研究院编辑丨极市平台. ...

  7. 【深度学习系列】卷积神经网络CNN原理详解(一)——基本原理(1)

    上篇文章我们给出了用paddlepaddle来做手写数字识别的示例,并对网络结构进行到了调整,提高了识别的精度.有的同学表示不是很理解原理,为什么传统的机器学习算法,简单的神经网络(如多层感知机)都可 ...

  8. 深度学习系列笔记——贰 (基于Tensorflow2 Keras搭建的猫狗大战模型 三)

    深度学习系列笔记--贰 (基于Tensorflow Keras搭建的猫狗大战模型 一) 深度学习系列笔记--贰 (基于Tensorflow Keras搭建的猫狗大战模型 二) 前面两篇博文已经介绍了如 ...

  9. 腾讯深度学习系列——深度学习及并行化实现概述

    深度学习及并行化实现概述 摘要: 深度学习可以完成需要高度抽象特征的人工智能任务,如语音识别.图像识别和检索.自然语言理解等.深层模型是包含多个隐藏层的人工神经网络,多层非线性结构使其具备强大的特征表 ...

  10. 【深度学习】Tensorboard可视化模型训练过程和Colab使用

    [深度学习]Tensorboard可视化模型训练过程和Colab使用 文章目录 1 概述 2 手撸代码实现 3 Colab使用3.1 详细步骤3.2 Demo 4 总结 1 概述 在利用TensorF ...

最新文章

  1. MyBatis框架学习DAY_01:概念/创建运行流程
  2. 基于 abp vNext 和 .NET Core 开发博客项目 - 使用Redis缓存数据
  3. P2050 [NOI2012]美食节
  4. Doom HDU - 5239(线段树+思维)
  5. 2.7.3-YARN-获取debug命令:resourceManager+nodeManager
  6. (3.13)mysql基础深入——mysql日志分析工具之mysqlsla【待完善】
  7. docx文档怎么排列图片_“胶水语言”办公自动化Word篇——使用Python编辑和读取Word文档
  8. tcp通讯 怎么进行安全认证_西门子PLC在博图环境下进行TCP通讯详解
  9. /usr/bin/ld: cannot find -lstdc++ -lz问题
  10. kubernetes相关命令
  11. 浅谈Cache Memory
  12. centos7,PPTP搭建简易教程
  13. MSP430F149程序——RS485
  14. .NET 高级架构师0003 架构师之路(2)---架构师的职责
  15. 关于视频字幕(有无外挂字幕)的提取死磕一天的总结
  16. 如何在安卓手机上面远程桌面操作
  17. Forth(背包!动态规则)
  18. C# Monitor.TryEnter 源码跟踪
  19. 国内如何下载并使用LINE(免费提供apk安装包)
  20. LeetCode 371. 两整数之和(异或操作) / 639. 解码方法 II(动态规划)/ 437. 路径总和 III

热门文章

  1. 小布语音下载安装_一加语音助手小布体验:还有很长的路要走
  2. 允许其他用户通过本计算机连接+连接手机,如何用手机搜索到的WF网络通过数据线连接台式电脑,让台式电脑共享网络...
  3. DEPRECATION: Python 2.7 reached the end of its life on January 1st, 2020. Please upgrade
  4. opencv+Dlib人脸融合
  5. visual studio code安装
  6. 2021-06-13读写锁=独占锁与共享锁
  7. 2012怎么设置index.php,配置伪静态.htaccess去掉wordpress固定连接里的index.php
  8. 计算机科学技术专业词汇,计算机专业一些单词
  9. latex 设置表格的字体大小和行高
  10. gtx1050ti最稳定的驱动_【硬件资讯】持续霸榜经久不衰?四岁高龄的GTX1060仍为Steam最受欢迎显卡!...