总是忘。记录一下,方便自己查看。tensorboard版本:1.13.X
代码如下:
......代码省略.....
# region8、收集要显示的变量
loss_scalar = tf.summary.scalar("loss", loss)
acc_scalar = tf.summary.scalar("acc", accuracy)
# endregion
# region9、合并所有变量op
merged = tf.summary.merge_all()
# endregion
......代码省略.....
with tf.Session() as sess:
......代码省略(开启线程+初始化变量).....
if isTrain:
# 创建一个event文件实例
train_writer = tf.summary.FileWriter("./tmp/summary/train", graph=sess.graph)
valid_writer = tf.summary.FileWriter("./tmp/summary/valid")
# 循环一遍的训练批次
train_batch_idxs = int(x_train_num / train_batch_size)
step = 0
for i in range(E_poch):
# region一、训练(train)
for j in range(train_batch_idxs):
summary = sess.run(merged,feed_dict={x: value, y_true: label_onehot, keep_prob: 0.5})
step = step + 1
train_writer.add_summary(summary, step)
# region二、验证(valid)
if (i + 1) % 10 == 0:
valid_num = 0 # 这里可以改成valid_num = step(记一下,下面会说)
# region每运行完10遍,执行一次验证集
for n in range(x_valid_num):
sum_accuracy_scalar, sum_loss_scalar =
sess.run([acc_scalar, loss_scalar],feed_dict={x: valid_value, y_true: valid_label, keep_prob: 1.0})
valid_writer.add_summary(sum_accuracy_scalar, n)
valid_writer.add_summary(sum_loss_scalar, n)
else:
......代码省略(test).....
......代码省略(测试).....
文件夹结构如图
:
生成tensorboard
步骤一:进入pycharm最下面的Terminal (终端),系统cmd也行(前提配置环境变量),anaconda3的prompt也可以。
步骤二:输入命令:tensorboard --logdir=./tmp/summary --host=127.0.0.1
步骤三:打开Chrome,输入:127.0.0.1:6006,可以看到左下角两个都加载进来了
附:接代码里的
valid_num = 0 # 这里可以改成valid_num = step(记一下,下面会说)
(如果没看,请用Ctrl+F查找)
现象:我们可以看到上图里的valid只存在于0-2k(横坐标)
之内。但是由于我们每隔10次运行一次验证集。所以其应该显示如下,而不是全部挤在一快。
解决办法:也就是上面说的:valid_num = 0
改成valid_num = step
就可以了。
如果没改的话:将下图左下角切换到RELATIVE,就可以了
上述打开tensorboard
的命令对我个人有效。这个东西很玄学,多试几下就出来了。