TensorBoard小白入门一

前提:

使用自己的笔记本电脑远程控制服务器,使用tensorboard可视化显示数据
安装:已安装Tensorflow-gpu和TensorBoard

安装和启动的过程

1.写程序tensorboard.py,生成.py文件

import tensorflow as tf
import os
import shutil
import numpy as np
config  = tf.ConfigProto()
config.gpu_options.allow_growth = True
sess = tf.Session(config=config)

"""TensorBoard 简单例子。
tf.summary.scalar('var_name', var)        # 记录标量的变化
tf.summary.histogram('vec_name', vec)     # 记录向量或者矩阵,tensor的数值分布变化。

merged = tf.summary.merge_all()           # 把所有的记录并把他们写到 log_dir 中
train_writer = tf.summary.FileWriter(log_dir + '/train', sess.graph)  # 保存位置
test_writer = tf.summary.FileWriter(log_dir + '/test', sess.graph)
运行完后,在命令行中输入 tensorboard --logdir=log_dir_path(你保存到log路径)
"""

log_dir = 'summary/graph2/'
if os.path.exists(log_dir):   # 删掉以前的summary,以免重合
    shutil.rmtree(log_dir)
os.makedirs(log_dir)
print 'created log_dir path'

a = tf.placeholder(dtype=tf.float32, shape=[100,1], name='a')

with tf.name_scope('add_example'):
    b = tf.Variable(tf.truncated_normal([100,1], mean=-0.5, stddev=1.0), name='var_b')
    tf.summary.histogram('b_hist', b)
    increase_b = tf.assign(b, b + 0.2)
    c = tf.add(a, b)
    tf.summary.histogram('c_hist', c)
    c_mean = tf.reduce_mean(c)
    tf.summary.scalar('c_mean', c_mean)
merged = tf.summary.merge_all()
train_writer = tf.summary.FileWriter(log_dir + '/train', sess.graph)  # 保存位置
test_writer = tf.summary.FileWriter(log_dir + '/test', sess.graph)


sess.run(tf.global_variables_initializer())
for step in xrange(500):
    if (step+1) % 10 == 0:
        _a = np.random.randn(100,1)
        summary, _ = sess.run([merged, increase_b], feed_dict={a: _a})    # 每步改变一次 b 的值
        test_writer.add_summary(summary, step)
    else:
        _a = np.random.randn(100,1) + step*0.2
        summary, _ = sess.run([merged, increase_b], feed_dict={a: _a})    # 每步改变一次 b 的值
        train_writer.add_summary(summary, step)
train_writer.close()
test_writer.close()
print('END!')

程序运行完成:

created log_dir path
END!
在summery的文件夹下,运行tensorboard --logdir=graph2/

出现了以下错误:

(tensorflow2.7) [zoe@215 ~]$ tensorboard --logdir=graph2/
Traceback (most recent call last):
  File "/home/Zoe/anaconda2/envs/tensorflow2.7/bin/tensorboard", line 7, in 
    from tensorboard.main import run_main
  File "/home/Zoe/anaconda2/envs/tensorflow2.7/lib/python2.7/site-packages/tensorboard/main.py", line 40, in 
    from tensorboard import default
  File "/home/Zoe/anaconda2/envs/tensorflow2.7/lib/python2.7/site-packages/tensorboard/default.py", line 37, in 
    from tensorboard.plugins.audio import audio_plugin
  File "/home/Zoe/anaconda2/envs/tensorflow2.7/lib/python2.7/site-packages/tensorboard/plugins/audio/audio_plugin.py", line 30, in 
    from tensorboard.plugins.audio import metadata
  File "/home/Zoe/anaconda2/envs/tensorflow2.7/lib/python2.7/site-packages/tensorboard/plugins/audio/metadata.py", line 22, in 
    from tensorboard.plugins.audio import plugin_data_pb2
  File "/home/Zoe/anaconda2/envs/tensorflow2.7/lib/python2.7/site-packages/tensorboard/plugins/audio/plugin_data_pb2.py", line 22, in 
    serialized_pb=_b('\n+tensorboard/plugins/audio/plugin_data.proto\x12\x0btensorboard\"}\n\x0f\x41udioPluginData\x12\x0f\n\x07version\x18\x01 \x01(\x05\x12\x37\n\x08\x65ncoding\x18\x02 \x01(\x0e\x32%.tensorboard.AudioPluginData.Encoding\" \n\x08\x45ncoding\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x07\n\x03WAV\x10\x0b\x62\x06proto3')
TypeError: __new__() got an unexpected keyword argument 'serialized_options'

目前还不知道是什么原因造成的
解决方法:
在tensorboard的安装包下运行
首先tensorboard的安装包,在tensorflow的安装包下,找到其路径为:/home/Zoe/anaconda2/envs/tensorflow2.7/lib/python2.7/site-packages/tensorflow/tensorboard
在这个路径下运行

(tensorflow2.7) [zoe@215 tensorboard]$ python tensorboard.py --logdir=//home//Zoe//Documents//test//summary//graph2//
Starting TensorBoard 47 at http://0.0.0.0:6006
(Press CTRL+C to quit)
在本机网页中输入http://0.0.0.0:6006时,显示无法打开页面

原因:使用本机电脑,远程操作的服务器,但是,所开的端口是服务器上的端口,需要将服务器中的端口,转发到本机的电脑上。
$ ssh -L 16006:127.0.0.1:6006 user@hostname
在连接SSH时创建端口转发,浏览器输入 127.0.0.1:16006就可以了。

原理:建立ssh隧道,实现远程端口到本地端口的转发 具体来说就是将远程服务器的6006端口(tensorboard默认将数据放在6006端口)转发到本地的16006端口,在本地对16006端口的访问即是对远程6006端口的访问,当然,转发到本地某一端口不是限定的,可自由选择。
最后,完成


tensorboard可视化.png

在浏览器中输入的时候,终于出现了TensorBoard的网页。但是,在数据显的地方,却报错如下。


No scalar data was found.jpg

原因:显示 “No scalar data was found”等信息,说明未正确打开记录文件。
返回查看文件的路径:
(1)路径python tensorboard.py --logdir=//home//Zoe//Documents//test//summary//graph2//,是否书写正确
(2)需要将logdir路径中的/,替换为//
问题既可解决


参考链接:
启动TensorBoard
TensorBoard以及远程访问(ssh端口转发)
TensorBoard 可视化 不显示数据问题 No scalar data was found...
TensorFlow-使用Tensorboard实现神经网络可视化
TensorBoard: 图表可视化

你可能感兴趣的:(TensorBoard小白入门一)