纯粹作为记录。
在原有程序的基础上,添加tensorboard可视化的流程
1 图的表示
1.1 添加tf.name_scope
name_scope是命名,只有添加了name_scope,才能在tensorboard里显示出一个“块”
在namespace下面的变量,一定要注意加上name的参数,如
with tf.name_scope('layer'):
weights = tf.Variable(tf.random_normal([input_shape, output_shape]), name='weights')
biases = tf.Variable(tf.zeros([1, output_shape])+0.01, name='biases')
out = tf.matmul(input_data, weights) + biases
1.2 添加Filewriter
添加了这个元素以后,还能把需要的显示的元素写进文件里。
writer = tf.summary.FileWriter('logs/', sess.graph)
通过以上两步就可以把“图”写进文件当中,文件保存在当前目录下的“logs”文件夹下。
1.3 在terminal里运行tensorboard
运行tensorboard,需要在terminal中运行,不是在程序中运行,而且必须“logs”文件夹下面有文件。
tensorboard --logdir=logs
在这里一定要注意参数--logdir,参数输入的是文件夹的名字,在 tensorboard 1.8.0 版本里,一定不能加引号,加了引号之后就找不到文件了。
最后出现
TensorBoard 1.8.0 at http://XXXXXXX:6006 (Press CTRL+C to quit)
把网址粘贴到chrome、firefox、safari等浏览器中,官方说明这几个浏览器的最新版都是支持tensorboard的,其他浏览器很难说,已知360就不能显示。
这时候选中graph,就可以显示图了
2 数据的表示
以上只是显示了图,如果要显示数据的话,比如说每一步的loss是多少?
需要添加另外的代码
2.1 添加scalar
scalar是创建曲线图的必要数据,需要在要显示的部分里添加,如loss(或者 accuracy 等)
with tf.name_scope('loss'):
loss = tf.losses.mean_squared_error(y_label, y_pred)
tf.summary.scalar('loss', loss)
2.2 融合数据
使用merge_all函数把前面的scalar融合在一起,只有进行的这一步才可以把数据写到文件里。
merged = tf.summary.merge_all()
当然如果只是想显示某部分数据,如在前面添加了loss和accuracy的scalar,现在只是想把loss数据写到文件,就可以用到另外一个函数
tf.summary.merge() 函数,至于用法以后再说吧,一般用merge_all就可以了
2.3 add_summary
首先在run里面,必须先添加merged,然后得到_merged后,再调用add_summary函数
for i in range(train_steps):
merged_, train_op_ = sess.run([merged, train_op])
if i % 1000 == 0:
writer.add_summary(merged_, i)
loss_ = sess.run(loss)
print('step:', i, ', loss is:', loss_)
之前一直出错,就是直接把merged当做是参数放在add_summary里调用,原因是merged是一个tensor,而tensor是不能直接添加,所以必须用run函数把tensor变成数据,才可以写进进文件。
2.4 显示数据图表
重复1.3,选中scalars标签,就可以显示loss,这里总共10000步,每1000步写一个数据,最终有10个数据写进去了。
纯粹记录一下,更深入的应用以后再添加吧