可视化计算流程
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
writer = tf.summary.FileWriter('logs/', sess.graph)
只需要把sess.graph写进去就可以,既可以看到流程图
可视化参数
- 1.先建立一个graph
- 2.确定要在graph中的哪些节点放置summary operations以记录信息
使用tf.summary.scalar记录标量
使用tf.summary.histogram记录数据的直方图
使用tf.summary.distribution记录数据的分布图
使用tf.summary.image记录图像数据
…… - 3.operations并不会去真的执行计算,除非你告诉他们需要去run,或者它被其他的需要run的operation所依赖。而我们上一步创建的这些summary operations其实并不被其他节点依赖,因此,我们需要特地去运行所有的summary节点。但是呢,一份程序下来可能有超多这样的summary 节点,要手动一个一个去启动自然是及其繁琐的,因此我们可以使用tf.summary.merge_all去将所有summary节点合并成一个节点,只要运行这个节点,就能产生所有我们之前设置的summary data。
- 4.使用tf.summary.FileWriter将运行后输出的数据都保存到本地磁盘中
- 5.运行整个程序,并在命令行输入运行tensorboard的指令,之后打开web端可查看可视化的结果
简单来说 比如一些loss acc,可以在模型定义的时候指定出来
tf.summary.scalar("loss", self.loss)
tf.summary.scalar("accuracy", self.accuracy)
然后再运行图的时候进行merge,,然后写进文件
merged = tf.summary.merge_all() # 合并所有的summary data的获取函数,
with tf.Session(config=self.config) as sess:
tf.global_variables_initializer().run()
writer = tf.summary.FileWriter(self.model_save_dir, sess.graph)
.....
.............
summary,_loss, _acc, _ = sess.run([merged,model.loss, model.accuracy, model.train_op], feed_dict)
writer.add_summary(summary, step)
远程tensorboard
通常在进行深度学习时都是在远处的服务器上进行训练的,所以此时该怎么在本地电脑可视化呢?答案是利用SSH的方向隧道技术,将服务器上的端口数据转发到本地对应的端口,然后就能在本地方法服务器上的日志数据了。
从上面连接成功后的提示可以知道,tensorboard所用到的端口时6006(没准儿哪天就换了),所以我们只需将该端口的数据转发到本地即可。
- ssh -L 16006:127.0.0.1:6006 account@server.address
- 其中16006是本地的任意端口,只要不和本地应用有冲突就行,随便写;
- 后面的account指你服务器的用户名,紧接是Ip
- windows的话,直接在命令行里执行这条令就行(也不知道啥时候windows命令行也支持ssh了)在登陆成功后(此时已远程登陆了服务器),同样进入到logs目录的上层目录,然后运行tensorboard --logdir=logs;
- 最后,在本地浏览器中运行127.0.0.1:16006即可。
同时可视化train、test
writer1 = tf.summary.FileWriter(self.model_save_dir+"./train", sess.graph)
writer2 = tf.summary.FileWriter(self.model_save_dir+"./test", sess.graph)
在同一个目录下,train和test分别写在两个文件夹里面,tensorboard到大的目录下即可