关于TensorBoard的使用以及遇到的坑记录
作者:dbsdzxq
TensorBoard的使用以及遇到的坑
关于TensorBoard的介绍请参考这篇文章,里面关于 各个仪表板的用法和说明讲的很详细,就不多说了,下面主要说下遇到的问题。
先附上代码,生成事件文件
import tensorflow as tf #定义一个简单的计算图,实现向量加法的操作 input1=tf.constant([1.0,2.0,3.0],name="input1") input2=tf.Variable(tf.random_uniform([3]),name="input") output=tf.add_n([input1,input2],name="add") #生成一个写日志的writer,并将当前的TensorFlow计算图写入日志。生成的文件在当前文件夹下 writer=tf.summary.FileWriter(".\log",tf.get_default_graph()) writer.close() init = tf.global_variables_initializer() tf.Session().run(init)
如果顺利的话,应该会生成1个事件文件,
如图
接下来就是使用TensorBoard进行可视化分析了在命令行窗口输入 tensorboard –logdir=log回车,注意不是在python的编辑环境里如spyder中,如果你这么做,
你会得到一个错误
SyntaxError: can’t assign to operator
回到命令行窗口,执行tensorboard –logdir=log
在浏览器中复制上面的网址http://DESKTOP-1Q4IB10:6006
就可以看到如下界面
没有任何数据,是不是很沮丧lol,因为我们的程序里面确实没有生成标量数据的事件文件,不过我们有图的事件数据a,点击图后就有结果了
成功的后面都有很多次失败的经历,
具体说说我碰见的神坑
在上面的图里面,一直都没有数据!!!。
像下面
在这篇文章里提到win10路径的问题,我试了下还是不行,不过把log文件夹移动到别的地方再cd的话可以成功,心里想不能每次都移动吧,继续找解决办法,这篇文章提出要先激活Tensorflow环境再使用,按照里面的方法试了下,
结果如下
可以看到网页的界面变了,难道是Google 的彩蛋/发呆,但是还是不能正常显示数据,只能继续找解决办法了,在这篇文章中,提出要将TensorBoard的程序路径添加到系统的环境变量中,我没有尝试,如果你看完本篇文章之后还有问题,不如去试下这个。
那么话说回来,到底是哪块的问题?就在一筹莫展的时候,看着控制台上的命令,突然发现我的文件夹名“TensoBoard练习 “里面有中文,在想会不会是这个问题,改成TensorBoardTest后,
运行结果如图
命令行中出现了警告,怎么回事?切换到正常环境下看看会不会再次出现
还是出现,仔细看看英语,说是发现了不止一个事件文件,回到文件夹,确实存在两个事件文件。
但是这两个区别在哪里?加载时又会加载哪个?
一番研究下发现,每运行一次python程序,就会生成一个新的事件文件,但是这个事件文件是在前一个版本的基础上再增添的一些新的内容生成的,运行看看具体内容。
果然只是复制了一份数据。并且在存在多个事件文件的情况下,TensorBoard会读取最近生成的一次事件文件。
总结
使用TensorBoard没有特别的难,无非就是路径问题加中文文件名,注意这两点就没事了。
注意:一开始的那张图片里面直接使用tensorboard –logdir=log就可以,是因为我的文件夹就在桌面。后面演示时放到E盘底下。另外像
#tensorboard --logdir=C:\Users\dbsdz\Desktop\TensorBoardTest\log 可以 #cd E://TensorBoardTest tensorboard --logdir=log 可以 #e: cd TensorBoardTest tensorboard --logdir=log 可以
这类的命令也都可以正确显示数据。
最后
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。