【Tensorflow】tensorboard log并排显示、同一窗口显示不同loss

  这是两个很简单(超级简单,我都不想写),但是用起来很舒服的技巧;

log并排显示

  首先是信息并排显示,现在的深度学习通常有很多个信息需要同时展示;以loss为例,如果下面这样写,那么屏幕一次能看到的loss有限(当然了,你是竖屏我就没话说了)。

代码
import tensorflow as tf

loss1 = tf.random.normal(shape=[1], name="loss1")  # 随机值模拟loss
loss2 = tf.random.normal(shape=[1], name="loss2")
loss3 = tf.random.normal(shape=[1], name="loss3")

loss1_smr = tf.summary.scalar(loss1.name, tf.reduce_mean(loss1)) # 统计标量
loss2_smr = tf.summary.scalar(loss2.name, tf.reduce_mean(loss2))
loss3_smr = tf.summary.scalar(loss3.name, tf.reduce_mean(loss3))

all_loss_smr = tf.summary.merge_all()       	#合并信息
writer = tf.summary.FileWriter("../logs/")      #logs 写出器

config = tf.ConfigProto()
config.gpu_options.allow_growth = True
with tf.Session(config=config) as sess:
    for ind in range(20):
        writer.add_summary(sess.run(all_loss_smr), ind)
Tensorboard 显示

在这里插入图片描述
  这种展示方法由于一般的电脑是横屏,能看到的log信息有限。这时候就想,能不能把同一类信息显示在同一行呢?比如,训练集的loss信息显示在一行,学习率变化显示在一行,然后PSNR等评价系数显示在一行。这时候就想到了Tensorflow里面提倡的名称域,我们只需要一句代码就能搞定。

代码

  还是以loss为例;

import tensorflow as tf

loss1 = tf.random.normal(shape=[1], name="loss1")  # 随机值模拟loss
loss2 = tf.random.normal(shape=[1], name="loss2")
loss3 = tf.random.normal(shape=[1], name="loss3")

with tf.name_scope("loss"):
    loss1_smr = tf.summary.scalar(loss1.name, tf.reduce_mean(loss1))  # 统计标量
    loss2_smr = tf.summary.scalar(loss2.name, tf.reduce_mean(loss2))
    loss3_smr = tf.summary.scalar(loss3.name, tf.reduce_mean(loss3))

all_loss_smr = tf.summary.merge_all()       # 合并信息
writer = tf.summary.FileWriter("../logs/")  # logs 写出

config = tf.ConfigProto()
config.gpu_options.allow_growth = True
with tf.Session(config=config) as sess:
    for ind in range(20):
        writer.add_summary(sess.run(all_loss_smr), ind)
Tensorboard 显示

在这里插入图片描述

同一窗口显示多个loss

  有时候,我们需要比较两个loss,比如,我们需要比较训练时训练集loss与验证集的loss,防止过拟合,这是就希望能在同一个窗口显示两个loss的曲线。写法如下面的代码。

import tensorflow as tf
import numpy as np

loss = tf.placeholder(dtype=tf.float32, name="loss")  # 占位符模拟loss

with tf.name_scope("loss"):
    loss_smr = tf.summary.scalar(loss.name, tf.reduce_mean(loss))

train_smr = tf.summary.merge([loss_smr])
valid_smr = tf.summary.merge([loss_smr])
train_writer = tf.summary.FileWriter("../logs/train")  # logs信息写在不同的文件夹
valid_writer = tf.summary.FileWriter("../logs/valid")

config = tf.ConfigProto()
config.gpu_options.allow_growth = True
with tf.Session(config=config) as sess:
    for ind in range(20):
        train_writer.add_summary(sess.run(train_smr, feed_dict={loss: np.random.normal()}), ind)  # 模拟输入训练集jisuanloss
        valid_writer.add_summary(sess.run(valid_smr, feed_dict={loss: np.random.normal()}), ind)  # 模拟输入验证集jisuanloss

  为什么要将log信息放在两个文件夹,因为这两个log信息是同名的,无法同时存放在同一路径。

Tensorboard 显示

  此时,tensorboard显示如下,可以通过左下角的蓝色椭圆中的按钮决定隐藏曲线。
在这里插入图片描述

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值