功能模块
Module | Annotation |
---|---|
SCALARS | 记录单一变量的,使用 tf.summary.scalar() 收集构建。 |
IMAGES | 收集的图片数据,当我们使用的数据为图片时(选用),使用 tf.summary.image() 收集构建。 |
AUDIO | 收集的音频数据,当我们使用数据为音频时(选用)。 |
GRAPHS | 构件图,效果图类似流程图一样,我们可以看到数据的流向,使用tf.name_scope()收集构建,最后从ckpt的.meta还原。 |
DISTRIBUTIONS | 用于查看变量的分布值,比如 W(Weights)变化的过程中,主要是在 0.5 附近徘徊。 |
HISTOGRAMS | 用于记录变量的历史值(比如 weights 值,平均值等),并使用折线图的方式展现,使用tf.summary.histogram()进行收集构建。 |
Note:
- 别瞎summary image,否则随着迭代次数的增加,log文件会变得超大。
打开方式
法一
代码运行完成之后,可以用bash脚本一键浏览器访问tensorboard终端:
xdg-open 'http://localhost:6006/#histograms'
tensorboard --logdir=.
法二
代码运行完成之后,命令行中跳转到代码生成的文件夹中,输入
tensorboard --logdir .
等待程序反应之后,浏览器访问
localhost:6006
也可以自己定义端口
demo
![](https://imgconvert.csdnimg.cn/aHR0cDovL2ltZy5ibG9nLmNzZG4ubmV0LzIwMTcwOTA3MTYyMDI5MTkx?x-oss-process=image/format,png)
![这里写图片描述](https://imgconvert.csdnimg.cn/aHR0cDovL2ltZy5ibG9nLmNzZG4ubmV0LzIwMTcwOTA3MTYyMjAwNTE1?x-oss-process=image/format,png)
![这里写图片描述](https://imgconvert.csdnimg.cn/aHR0cDovL2ltZy5ibG9nLmNzZG4ubmV0LzIwMTcwOTA3MTYyMDQxNzky?x-oss-process=image/format,png)
![这里写图片描述](https://imgconvert.csdnimg.cn/aHR0cDovL2ltZy5ibG9nLmNzZG4ubmV0LzIwMTcwOTA3MTYyMTAwOTU5?x-oss-process=image/format,png)
源码
打开终端,执行 bash run.sh
即可一键生成 tensorboard log 并自动打开 6006端口
main.py:
log_path = './log'
N = 400
import shutil
try:
shutil.rmtree(log_path)
except OSError:
pass
import tensorflow as tf
k = tf.placeholder(dtype=tf.float32)
moving_mean = tf.random_normal(shape=[1000], mean=(5*k), stddev=1)
tf.summary.histogram('normal/moving_mean', moving_mean)
shrinking_mean = tf.random_normal(shape=[1000], mean=0, stddev=1-k)
tf.summary.histogram('normal/shrinking_mean', shrinking_mean)
normal_combined = tf.concat([moving_mean, shrinking_mean], axis=0)
tf.summary.histogram('normal/normal_combined', normal_combined)
gamma = tf.random_gamma(shape=[1000], alpha=k)
tf.summary.histogram('other/gamma', gamma)
poisson = tf.random_poisson(lam=k, shape=[1000])
tf.summary.histogram('other/poisson', poisson)
uniform = tf.random_uniform(shape=[1000], minval=k*10)
tf.summary.histogram('other/uniform', uniform)
all_combined = tf.concat([moving_mean, shrinking_mean, gamma, poisson, uniform], axis=0)
tf.summary.histogram('all_combined', all_combined)
summaries = tf.summary.merge_all()
sess = tf.Session()
writer = tf.summary.FileWriter(log_path)
for step in range(N):
val = step/float(N)
merge_op = sess.run(summaries, feed_dict={k:val})
writer.add_summary(summary=merge_op, global_step=step)
writer.close()
run.sh:
python main.py
xdg-open 'http://localhost:6006/#histograms'
tensorboard --logdir=./
其他
tensorboard的graph:
- tf.get_default_graph().get_tensor_by_name("output0/output0:0”),括号里必须是tensor(即必须在node名称后加上’ :0 ’)。
- 如果graph中显示的node以 ‘ /(xxx) ’ 结尾,则对应的tensor名字是把该后缀删掉,例如,output0/output0/(output0) 的tensor名是output0/output0:0 。
Note:
- 导入 .py 文件的网络结构时,例如 net = NetworkYours({‘input0’: pts_img}, trainable=False) ,则input node的名称必须去.py文件里找现成的,而不是用tensorboard把graph画出来后再看。