人工智能TensorFlow(九)-TensorBoard 演示神经网络训练过程

TensorBoard简介

TensorBoard是一个可视化工具,能够有效地展示Tensorflow在运行过程中的计算图、各种指标随着时间的变化趋势以及训练中使用到的数据信息。TensorBoard 和 TensorFLow 程序跑在不同的进程中,TensorBoard 会自动读取最新的 TensorFlow 日志文件,并呈现当前 TensorFLow 程序运行的最新状态。

  • 添加记录节点:tf.summary.scalar/image/histogram()等
  • 汇总记录节点:merged = tf.summary.merge_all()
  • 运行汇总节点:summary = sess.run(merged),得到汇总结果
  • 日志书写器实例化:summary_writer = tf.summary.FileWriter(logdir, graph=sess.graph),实例化的同时传入 graph 将当前计算图写入日志
  • 调用日志书写器实例对象summary_writer的add_summary(summary, global_step=i)方法将所有汇总日志写入文件
  • 调用日志书写器实例对象summary_writer的close()方法写入内存,否则它每隔120s写入一次
  • 查看TensorBoard:tensorboard –logdir=D:\foxtable\big_data\logs,等于号后面是你的log地址
  • 添加节点名称:tf.name_scope(‘layer’)

TensorBoard可视化

我们在前期的基础上(人工智能神器—TensorFlow入门基础(激励函数、隐藏层)),修改一下代码,显示如下图的可视化

TensorBoard可视化

def add_layer(inputs,in_size,out_size,activation_function=None):
 with tf.name_scope('layer'):
 with tf.name_scope('weights'):
 Weights = tf.Variable(tf.random_normal([in_size,out_size]),name='W')
 with tf.name_scope('biases'):
 biases = tf.Variable(tf.zeros([1,out_size])+0.1,name='b')
 with tf.name_scope('Wx_plus_b'):
 Wx_plus_b=tf.matmul(inputs,Weights)+biases
 if activation_function is None:
 outputs=Wx_plus_b
 else:
 outputs=activation_function(Wx_plus_b)
 return outputs

如上代码就是我们定义层的代码,我们在定义层的基础上,把我们需要的节点都加上节点名称

with tf.name_scope('layer'):定义隐含层的名称为layer

在layer层里面定义了weights 与 biases 2个节点变量,且定义了矩阵相乘的节点名称,打开layer层,会看到如下

weights 与 biases

在定义weights 与 biases时,我们也定义了变量的名称是W,b,当你接着打开weights 与 biases时,会看到里面我们定义的变量

W,b

定义输入层

隐藏层的定义完成后,我们需要定义输入层

with tf.name_scope('inputs'):
 xs=tf.placeholder(tf.float32,[None,1],name='x_input')
 ys=tf.placeholder(tf.float32,[None,1],name='y_input')

定义输入层的名称为inputs,里面有2个变量x_input ,y_input

输入层

lay_one=add_layer(xs,1,10,activation_function=tf.nn.relu)#hidden layer
predition=add_layer(lay_one,10,1,activation_function=None)#输出层

以上加入2层隐藏层,定义输出层

定义loss 与train

with tf.name_scope('loss'):
 loss=tf.reduce_mean(tf.reduce_sum(tf.square(ys-predition),reduction_indices=[1]))
with tf.name_scope('train'):
 train_step=tf.train.GradientDescentOptimizer(0.1).minimize(loss)

输入层与隐藏层定义完成后,需要定义loss 与train层,我们添加loss 与train层的名称如上

训练神经网络

init = tf.global_variables_initializer()
# 开始训练
with tf.Session() as sess:
 writer=tf.summary.FileWriter("logs/",sess.graph)
 sess.run(init)

日志书写器实例化:summary_writer = tf.summary.FileWriter(logdir, graph=sess.graph),实例化的同时传入 graph 将当前计算图写入日志,会在当前目录下的log文件夹下,生成一个log文件。

可视化TensorBoard

当运行完程序后,会生成一个log文件,在Windows CMD命令,进入终端,输入如下命令:

tensorboard --logdir=D:\foxtable\big_data\logs

等号后面是你log的文件夹地址

TensorBoard地址

运行完成后,会提示上图的运行地址,在Google浏览器上面输入地址,便会看到TensorBoard的可视化效果。(所有代码拼接起来就是本期完整代码)

TensorBoard效果图

下期预告:

本期介绍了如何使用TensorBoard来搭建可视化过程,下期介绍下图的显示操作