tensorflow入门学习,tensorboard: command not found错误解决,让训练结果可视化,可视化结果怎么看(十)

tensorflow 支持结果可视化。可视化的流程是:在训练过程中,将要观察的数据写入文件,最后调用 tensorboard 载入文件,即可在浏览器中查看结果。本节将学习这一功能。

可视化结果告诉我们什么


得到可视化文件,用 tensorboard 载入后,会输出一个地址,在浏览器中访问该地址,即可得到下图:

可以看出,有 4 种类型的可视化结果,分别是 scalars graphs distributions histograms。上图展示的是 loss 的 scalars,可以很清晰的看出下降过程,这说明在这次应用中,tensorflow 神经网络是正常工作的。如果 loss 并不是越来越小,而是维持一个较大的值,或者甚至变大,那么,神经网络必须得调整。同时,图形化的显示,更能表现出趋势,这次训练,loss 下降的很快,因此可以得出结论,这次构建的神经网络工作的很好,很合适。

怎样让训练结果可视化


tensorflow 提供了 tf.summary.histogramtf.summary.scalar 方法来描述histograms以及scalars,以第六节的线性回归为例,只需在需要观察的量之后添加相应的可视化方法即可,如下图:

# 构建网络
w = tf.Variable(tf.random_uniform([1], -1.0, 1.0))
b = tf.Variable(tf.zeros([1]))
y = w*xdata + b
loss = tf.reduce_mean(tf.square(y-ydata))

# 可视化 
tf.summary.histogram('/weights', w)     # 参数1:名称,参数2:值
tf.summary.histogram('/biases', b)
tf.summary.scalar('loss', loss)
这里只用到histograms以及scalars,其他类型的可视化是类似的。

构建完成后,需要将各种显示合并,然后创建写入方法:

merged = tf.summary.merge_all()
writer = tf.summary.FileWriter("logs/", sess.graph) # 写到 logs 文件夹里

最终,在 session 里 run(merged),然后把结果写入文件即可。

rs = sess.run(merged)
writer.add_summary(rs, 写入索引号)

完整代码如下:

#encoding=utf8
import tensorflow as tf
import numpy as np

# 模拟数据
xdata = np.random.rand(100).astype(np.float32)
ydata = xdata*0.5 + 0.8

# 构建网络
w = tf.Variable(tf.random_uniform([1], -1.0, 1.0))
b = tf.Variable(tf.zeros([1]))
y = w*xdata + b
loss = tf.reduce_mean(tf.square(y-ydata))

# 可视化 *********
tf.summary.histogram('/weights', w)     # 参数1:名称,参数2:值
tf.summary.histogram('/biases', b)
tf.summary.scalar('loss', loss)

# 训练
train = tf.train.GradientDescentOptimizer(0.3).minimize(loss)

# 初始化
init = tf.global_variables_initializer()

# 执行
sess = tf.Session()

merged = tf.summary.merge_all() 
writer = tf.summary.FileWriter("logs/", sess.graph) # 写到 logs 文件夹里

sess.run(init)
for i in range(301):
    sess.run(train)
    if i%30 == 0:
        print i, sess.run(w), sess.run(b)
        rs = sess.run(merged)
        writer.add_summary(rs, i)

执行脚本,即可在 logs 文件夹里得到可视化文件。

$ ls
logs  regression_visiable.py
$ ls logs
events.out.tfevents.1530409906.lcc-vm       # 可视化文件

tensorboard 载入可视化文件,浏览器显示


得到可视化文件后,需要用tensorboard载入,于是执行以下命令:

$ tensorboard --logdir='logs'
tensorboard: command not found

结果提示command not found,这可能是没有安装交叉编译后的可执行程序,因此需要利用 python 调用。首先需要知道 tensorboard 安装在哪:

于是,可以执行以下命令,载入可视化文件:

$ python /home/lcc/.local/lib/python2.7/site-packages/tensorboard/main.py --logdir='logs'
TensorBoard 1.8.0 at http://lcc-vm:6006 (Press CTRL+C to quit)

发现成功了,访问 http://lcc-vm:6006,即可看到图形化的训练过程。loss 上面已经介绍,下面看看权重 w 和偏置 b,根据代码,它们被存储在 histograms 里。

因为权重和偏置不止一个值,所以它不是一条线,而是一个面,表示值都分布在此。横轴表示训练结果,纵轴表示训练次数。可以看出,biases中途有一次训练结果在 0.88 附近,最终落在 0.8 附近。weights一开始是个负值,接着就到达接近 0.4 的位置,最终落在 0.5 附近。这与咱们在终端打印出的输出结果是一致的:

$ python regression_visiable.py 
0 [-0.04554251] [0.7673728]     # weights 起始是负值
30 [0.36016202] [0.87351346]    # biases 0.88 附近
60 [0.45276427] [0.8248321]
90 [0.48404422] [0.80838805]
120 [0.49461034] [0.8028334]
150 [0.4981794] [0.8009571]
180 [0.49938497] [0.8003233]
210 [0.49979222] [0.80010927]
240 [0.49992982] [0.8000369]
270 [0.49997628] [0.80001247]
300 [0.49999195] [0.80000424]
阅读更多:   tensorflow
添加新评论

icon_redface.gificon_idea.gificon_cool.gif2016kuk.gificon_mrgreen.gif2016shuai.gif2016tp.gif2016db.gif2016ch.gificon_razz.gif2016zj.gificon_sad.gificon_cry.gif2016zhh.gificon_question.gif2016jk.gif2016bs.gificon_lol.gif2016qiao.gificon_surprised.gif2016fendou.gif2016ll.gif