《TensorFlow技术解析与实战》第3章 可视化TensorFlow

  可视化是认识程序的最直观的方式。在做数据分析时,可视化一般是数据分析最后一步的结果呈现。tensorboard是tensorflow自带的一个强大的可视化工具,也是一个web应用程序套件。

3.1 PlayGround

  PlayGround是一个用于教学目的的简单神经网络的在线颜色、实验的图形化平台,非常强大地可视化了神经网络的训练过程。使用它可以在浏览器里训练神经网络,对Tensorflow有一个感性的认识。

  打开google浏览器,在地址栏中输入:http://playground.tensorflow.org/ 敲回车,就可以打开下面的页面。
在这里插入图片描述
  该界面中,从左到右分别是:数据(DATA)、特征(FEATURES) 、神经网络的隐藏层(HIDDEN LAYERS)和层总的连接线和输出(OUTPUT)几个部分组成。

3.3 TensorBoard可视化的例子一

  tensorboard是tensorflow自带的一个强大的可视化工具,也是一个web应用程序套件。

  TesnsorBoard通过运行一个本地服务器,来监听6006端口。,在浏览器发出请求时,分析训练时记录的数据,绘制训练过程中的图像。

  词嵌入(word embedding)在机器学习中非常常见,可以应用在自然语言处理、推荐系统等其他程序中。下面我们就以Word2vec为例来看看词嵌入投影仪 (projector) 的可视化。

  在网址:https://github.com/tensorflow/tensorflow/tree/master/tensorflow/examples/tutorials/word2vec 中下载word2vec_basic.py文件。

  其中,Word2vec_basic.py中采用的是text8作为文本的训练数据集。text8在网址:http://mattmahoney.net/dc/textdata 中可以下载到。

1、运行word2vec_basic.py

  在Spyder上运行,可以得到下面的图。并且会生成如下图所示的log文件。
首先安装tensorflow,
log文件

在这里插入图片描述

2、在tensorboard中显示

  打开命令提示端,然后切换到如下图所示的路径(即红线处的路径),然后输入命令

tensorboard --logdir=log文件的目录

在这里插入图片描述
  但是敲回车后,出现了如下图所示的错误。
在这里插入图片描述
  为了处理上述错误,开始上网各种搜,最后,按照上述路径打开manager.py文件,修改第51行代码为下面的代码:

(dt - datetime.datetime.fromtimestamp(86400)).total_seconds()),

  再次执行,没有再显示错误了。
在这里插入图片描述
  接下来,把上面红色框线中的地址输入到google浏览器中,敲回车,还是无法显示。然后把在命令端按下CTRL+C组合键,在google浏览器中输入:localhost:6006 敲回车,tensorboard显示出来了。

在这里插入图片描述
  在projector面板的左侧的工具栏中,可以选择降维的方式,有T-SNE、PCA 和 CUSTOM 的降维方式。在projector面板右侧,可以采用正则表达式匹配出某些词,直观地看到词之间的余弦距离的关系。

3.2 TensorBoard可视化例子二

  我们以MNIST手写数字识别的入门示例来进行介绍

  下载代码:https://github.com/tensorflow/tensorflow/tree/master/tensorflow/examples/tutorials/mnist

  打开命令提示窗口,切换到 D:/programdata/anaconda3/scripts (因为我的anaconda安装在了D盘的programdata中),然后输入在Spyder中运行 minist_with_summaries.py 文件

tensorboard --logdir="代码所在的目录路径/minist_with_summaries.py"

遇到的第一个问题:
在这里插入图片描述
  上述问题的解决方法是:打开mnist_with_summaries.py文件将第201-2012行进行修改(也就是在tensorflow前加上了 /,在input_data后面也加上了 /),如下所示:
在这里插入图片描述
遇到的第二个问题:

  再次运行mnist_with_summaries.py文件,又出现了如下问题
在这里插入图片描述
  这个问题是无法访问网址,从而无法获取MINST的数据集。

  但是,在代码所在的根目录下会生成文件夹== tensorflow→mnist→input_data==

  解决办法: 下载下MINST数据集,复制到上面的input_data文件夹中
在这里插入图片描述
  在这里附上MINST数据集的下载地址:http://yann.lecun.com/exdb/mnist/

  同时,还得打开fully_connected_feed.py文件,将第261-268行进行修改,如下图所示:
在这里插入图片描述
  现在打开fully_connected_feed.py文件,然后运行一下,得到如下的结果:
在这里插入图片描述
  打开mnist_with_summaries.py文件,然后运行一下,会在logs文件夹中生成中间结果文件。
在这里插入图片描述
  现在打开命令提示行提示窗口,在其中输入如下图所示的命令后,敲回车得到下图的结果:
在这里插入图片描述
  打开google浏览器,在其中输入:localhost:6006, 敲回车,就得到了下面的页面了。
在这里插入图片描述

1、scalars面板
  • Smoothing: 图像的曲线平滑程度
  • Horizontal Axis:水平轴的表示。其中水平轴的表示分为3种:
  • STEP:代表迭代次数
  • RELATIVE代表按照训练集he测试集的相对值
  • WALL代表按照时间

  SCALARS面板中还绘制了每一层的 偏置(biases)和 权重(weights)的变化曲线。例如,偏置的变化曲线包括每次迭代中的最大值、最小值、平均值和标准差。如下图所示
在这里插入图片描述

2、images面板

  展示了训练数据集和测试数据集经过预处理后图片的样子。
在这里插入图片描述

3、graphs面板

  graphs面板是对理解神经忘了结构最有帮助的一个面板,它直观地展示了数据流图。如下图所示,界面中节点之间的连线即为数据流,连线越粗,说明在两个节点之间流动的张量(tensor)越多。

  当我们选定迭代次数为899时,可以显示各个节点的computer time(计算时间)和 Memory(内存消耗),如下图所示。
在这里插入图片描述

4、distributions面板

  用平面来表示来自特定层的激活前后权重和偏置的数据分布。
在这里插入图片描述

5、histograms面板

  立体地展现来自特定层的激活前后权重和偏置的分布。
在这里插入图片描述

总结

  可视化室研究深度学习的一个重要方向,有利于我们直观地探究训练过程中的每一步发生的变化。tensorflow提供了强大的工具tensorboard,不仅有完善的API接口,而且提供的面板也非常丰富。

参考资料

【1】《TensorFlow技术解析与实战》第3章 可视化TensorFlow
【2】 python之时间、日期处理模块(datetime) https://blog.csdn.net/gty931008/article/details/80254806

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值