DeepLearning | Tensorboard可视化与远程链接服务器

实施对深度神经网络训练过程的实时监控,有助于我们掌握网路的训练进程及时发现问题。tensorflow作为主流的深度学习框架为我们设计了封装十分完善的可视化工具——tensorboard,用起来也十分的方便。这篇博客介绍tensorboard的两个主要应用,一个是显示网络结构即训练过程中的一些参数loss,weights等,还有一个就是当用服务器训练网络时,我们如何在本地显示tensorboard

一、Tensorboard监控网络训练过程

TensorBoard完整的使用流程主要有一下几步:

·添加记录节点,即添加需要监测的对象:tf.summary.scalar/image/histogram()等

·汇总记录节点,将所有监测对象合并为一个参数:merged = tf.summary.merge_all()

·日志书写器实例化,同时将当前计算图写入日志:summary_writer =  tf.summary.FileWriter(logdir, graph=sess.graph)

·调用书写器summary_writer的add_summary(summary, global_step=i)方法将所有汇总日志写入文件

·调用书写器summary_writer的close()方法写入内存,否则它每隔120s写入一次

接下来,举个具体的例子

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

"""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 + '/add_example', sess.graph)  # 保存位置

运行完后,在命令行中输入 tensorboard --logdir=log_dir_path(你保存到log路径)
"""

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

with tf.name_scope('add_example'):
    a = tf.Variable(tf.truncated_normal([100,1], mean=0.5, stddev=0.5), name='var_a')
    tf.summary.histogram('a_hist', a)
    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()
writer = tf.summary.FileWriter(log_dir+'add_example', sess.graph)


sess.run(tf.global_variables_initializer())
for step in xrange(500):
    sess.run([merged, increase_b])    # 每步改变一次 b 的值
    summary = sess.run(merged)
    writer.add_summary(summary, step)
writer.close()

在执行了上述代码以后,会在 log_dir 下生成一个文件,这时候离完工还差最后两步,第一步,打开终端,输入

tensorboard --logdir="summary/graph/"

输入以后,终端会弹出一个网络地址
第二步就是复制该地址,在浏览器打开,如果不能打开,就尝试地址栏输入

http://localhost:6006

这样应该就能打开了,正确打开的tensorboard类似于下图
这里写图片描述

二、在本地监控在服务器上训练的网络

相比于本地监控,实现远程监控也只多了几步而已

·在登陆服务器时,使用 ssh -L 16006:127.0.0.1:6006 用户名1@网络地址 代替原来的 ssh 用户名1@网络地址

·在服务器上运行程序,找到之前提到过的会在目录下生成的日志文件,运行 tensorboard --logdir=xxx --port=6006 这里的xxx表示文件存储的目录

·在本地浏览器输入 127.0.0.1:16006 即可在本地显示tensorboard
发布了74 篇原创文章 · 获赞 269 · 访问量 15万+

猜你喜欢

转载自blog.csdn.net/Liangjun_Feng/article/details/81841563