这片文章的绘图基于我之前写的softmax regress 代码所写。意在以简洁的方式看到tensorboard的绘图效果。tensorflow的绘图有几大模块:
- EVENT:tf.scalar_summary,用于记录梯度函数值的走向之类的。
- IMAGES:收集图片数据,当你处理图片是选用。
- AUDIO:收集音频数据,当你使用数据为音频时,选用。
- GRAPHS :构建图,效果类似流程图一样,可以看到数据的流向,使用tf.name_scope。
- DISTRIBUTIONS:这个可以看变量的分布值,比如w值变化的过程中,老是在0.5附近徘徊。
- HISTOGRAMS:记录优化变量的历史值(比如weight值,平均值等),并使用折线图的方式展现。使用tf.histogram_sumary进行收集。
看到tensorflow的GRAPHS只需要两个步骤
1.用tf.name_scope来打包要展示的处理过程
2.启动一个tf.train.SummaryWriter
代码如下:
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
# to get the data path in these project
import os
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data
import numpy as np
# mnist数据集的目录,先获得整个工程中数据目录的根目录,然后拼接子目录
dataPathRoot = os.path.abspath('./../../../data')
mnistDataPath = os.path.join(dataPathRoot, 'MNIST_data')
print(mnistDataPath)
# get the mnist train data
mnist = input_data.read_data_sets(mnistDataPath, one_hot=True)
batch_size=10
# 训练或测试数据输入
with tf.name_scope('1_0input'):
x = tf.placeholder(tf.float32, [None, 28 * 28], name='input_x')
y = tf.placeholder(tf.float32, [None, 10], name='target_y')
# 需要优化的变量
with tf.name_scope('1_1linefuanction'):
w = tf.Variable(tf.zeros([28 * 28, 10]), name='weight')
b = tf.Variable(tf.zeros(10), name='bias')
with tf.name_scope('2_0softmax'):
xwb=tf.matmul(x, w) + b
pred = tf.nn.softmax(xwb, name='softmax')
# 交叉熵和梯度下降优化
with tf.name_scope('3_0cross_entropy'):
cross_entropy=-tf.reduce_sum(y*tf.log(pred))
tf.histogram_summary('cross_entropy',cross_entropy)
train_step=tf.train.GradientDescentOptimizer(0.01, name='GradientDescent').minimize(cross_entropy)
# 模型评估
correct_prediction=tf.equal(tf.argmax(pred,1),tf.argmax(y,1))
accuray=tf.reduce_mean(tf.cast(correct_prediction,tf.float32))
init_variable = tf.initialize_all_variables()
sess = tf.Session()
#SummaryWriter中的路径参数最好为全路径,不要使用~/workingdirectory这些形式,它不认识。
logpath=r'/home/username/workingdirectory/tensorflow_logs'
summary_writer = tf.train.SummaryWriter(logpath,sess.graph)
sess.run(init_variable)
one_batch_x, one_batch_y = mnist.train.next_batch(batch_size)
#执行一次训练
sess.run(train_step, feed_dict={x: one_batch_x, y: one_batch_y})
print(sess.run(accuray,feed_dict={x:mnist.test.images[:batch_size],y:mnist.test.labels[:batch_size]}))
summary_writer.close()
sess.close()
运行完这段代码后,bash窗口里面cd
到logpath
目录查看,有文件生成说明正常咯。我生成的文件名如下events.out.tfevents.1477627392.ubuntu
。
有了日志文件,然后是使用tensorboard命令来启动。
1.首先是进入tensorflow环境:source activate tensorflow
(我用anaconda的方式安装了CPU版本的tensorflow)
2.tensorboard --logdir logpath
我在logdir后面写了个.
这个它是认识的,写全路径也行。
3.在浏览器下面打开bash里面提示的URLhttp://127.0.1.1:6006
出现下画面。
4.点击上面的GRAPHS就能出现我们设计的图了
PS:后续上传histgram_summary的实验代码,有些许不同。但是到这里,估计你也能自己探索出来了。