如何在TensorFlow中添加自定义数据显示在tensorboard中

以在tensorboard中添加训练过程中网络的损失值为例。

在网络构建阶段,
L = xxnet.loss(output, label)
tf.summary.scalar("Training loss", L)
然后添加一个op
summary_op = tf.summary.merge_all()

在会话中,定义一个SummaryWriter
summary_writer = tf.summary.FileWriter(logdir, sess.graph)
在每一训练步骤中,
summary_str = sess.run(summary_op)
summary_writer.add_summary(summary_str, step)

然后当训练开始后,就可以在tensorboard中看到损失值了。不过,这种方式缺乏灵活性。更推荐使用下面的方式

summary_writer = tf.summary.FileWriter(logdir)
summary = tf.Summary(value=[
    tf.Summary.Value(tag="Training loss", simple_value=L),
    tf.Summary.Value(tag="Validation loss", simple_value=L_val)])
summary_writer.add_summary(summary, step)

或者:

summary_writer = tf.summary.FileWriter(logdir)
summary = tf.Summary()
summary.value.add(tag="Training loss", simple_value=L)
summary.value.add(tag="Validation loss", simple_value=L_val)
summary_writer.add_summary(summary, step)

C/C++中的mmset函数

void * memset(void *buffer, int c, int count)
将buffer所指位置后面的count个字节用c代替,并返回buffer。c实际值应该在0到255之间

在一段内存块中填充某个给定的值,是对较大的结构体或者数组进行 清零操作的最快方法。

对一个数组清零示意

char buf[20];
mmset(buf, 0, sizeof(char)*20);