Tensorboard初体验

Tensorflow是一个非常受欢迎的机器学习框架,除了包含了许多已有的机器学习方法,tensorflow当中还包含一个非常有用的可视化工具tensorboard,它将对我们分析训练效果,理解训练框架和优化算法有很大的帮助。

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端口。

针对这种情况,有两种方法解决:

  1. 在启动tensorboard的时候直接指定端口号
  2. 杀掉老的端口,重新开启tensorboard

方法1:在启动tensorboard的时候直接指定端口号

直接使用命令tensorboard –logdir=… –port=6007就可以了,6007端口是新的端口号,不会与之前的6006端口重复。

方法2:杀掉老的端口,重新开启tensorboard

Linux下查看端口号的命令:netstat -an,这个命令可帮助你看到当前计算机开启的所有端口号。

查看端口具体被那个进程占用:lsof -i :6006

可以看出6006这个端口正在给Python使用

我们查询到端口号6006的PID是16484,直接杀掉这个PID就可以啦。命令:kill-9 16484,之后就可以正常使用tensorboard啦。

The End


已发布

分类

评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注