Tensorflow是一个非常受欢迎的机器学习框架,除了包含了许多已有的机器学习方法,tensorflow当中还包含一个非常有用的可视化工具tensorboard,它将对我们分析训练效果,理解训练框架和优化算法有很大的帮助。
首先,我们需要保证电脑上装好了tensorflow与tensorboard,可以用下面的方法安装:
pip install tensorflow tensorboard
我们写一段简单的程序。
import tensorflow as tf
with tf.name_scope('graph') as scope:
matrix1 = tf.constant([[3., 3.]],name ='matrix1') #1 row by 2 column
matrix2 = tf.constant([[2.],[2.]],name ='matrix2') # 2 row by 1 column
product = tf.matmul(matrix1, matrix2,name='product')
with tf.Session() as sess:
writer = tf.summary.FileWriter("logs/", sess.graph)
init = tf.global_variables_initializer()
sess.run(init)
可以看到,上面的代码中,创建了两个常量,再对他们进行乘法运算。writer =tf.summary.FileWriter(“logs/”, sess.graph)这一行将sess.graph存储在logs/路径下。
代码运行完后,我们可以看到生成了一个logs文件夹,里面生成了一个文件events.out.tfevents.1542759633.lisiyuandeMacBook-Pro.local
运行tensorboard –logdir logs
进入http://lisiyuandeMacBook-Pro.local:6006看看里面有什么内容。
可以看到,浏览器中生成了一张图,里面有两个矩阵。绿色框里的内容正是我们上面指定的数据。
当重复地开启tensorboard,可能会提示你ERROR: TensorBoard could not bind to port 6006, it was already in use,这是因为之前开启的tensorboard占用了6006端口。
针对这种情况,有两种方法解决:
- 在启动tensorboard的时候直接指定端口号
- 杀掉老的端口,重新开启tensorboard
方法1:在启动tensorboard的时候直接指定端口号
直接使用命令
tensorboard –logdir=… –port=6007就可以了,6007端口是新的端口号,不会与之前的6006端口重复。
方法2:杀掉老的端口,重新开启tensorboard
Linux下查看端口号的命令:netstat -an,这个命令可帮助你看到当前计算机开启的所有端口号。
查看端口具体被那个进程占用:lsof -i :6006
我们查询到端口号6006的PID是16484,直接杀掉这个PID就可以啦。命令:kill-9 16484,之后就可以正常使用tensorboard啦。
发表回复