可视化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文件。
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