人工智能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来搭建可视化过程,下期介绍下图的显示操作