tensorflow中的tf.summary()和tf.Summ

2018-07-04  本文已影响0人  FireJohnny

前段时间在处理tensorflow的tensorboard时发现当验证集过大,而导致无法一次性处理时将数据写入summary()是一个错误的结果,而在查阅了很多资料后发现很少有这方面的文章。
而tensorflow官方由于最近好像被枪毙了,不翻墙进不去,于是在github上发现一个解决办法,再次记录,帮助新学者。

1、tf.summary

在有足够的空间的情况下(内存或者显存,根据自己情况判断),一般会直接将需要的tensor直接写入到

summary_1 = tf.summary.scalar(name="name_1",tensor=tensor_value_1)
summary_2 = tf.summary.scalar(name="name_2",tensor=tensor_value_2)
summary = tf.summary.merge_all() #summary = tf.summary.merge([summary_1,summary_2])

with tf.Session() as sess:
    summary_write = tf.summary.FileWriter(out_dir,sess.graph) #out_dir 为输出路径
    summary_out = sess.run(summary)
    summary_write.add_summary(summary_out)

但是当数据过大,无法一次性跑完验证集的时候就需要自己定义google_protocol_buffer,此时的方案为下:

2、tf.Summary()

with tf.Session() as sess:
    summary_write = tf.summary.FileWriter(out_dir,sess.graph) #out_dir 为输出路径
    t_loss = []
    for e in batch_data(dev_data):
        loss = sess.run(model.loss,feed_dict={model.input:e})
        t_loss.append(loss)
    loss = np.mean(loss)
    dev_summary = tf.Summary()
    dev_summary.value.add(tag="name_1",simple_value=loss)
    summary_write.add_summary(dev_summary)
    ###    
    or
    dev_summary = tf.Summary(value = [tf.Summary.value(tag="name_1",simple_value=loss)])
    summary_write.add_summary(dev_summary)
    ###

其他涉及到的image或者是直方图等信息可以参考一下方案:
[链接地址]https://gist.github.com/FireJohnny/1f82b5f7a3eabbdc7aacdb967fe1b557

上一篇下一篇

猜你喜欢

热点阅读