如何在TensorFlow中构造任意文本摘要?

时间:2017-09-14 13:43:12

标签: logging tensorflow tensorboard

我想在TensorBoard中记录一些任意字符串。

我知道如何为任意标量做到这一点:

myclient

但如何对任意文字摘要做同样的事情? 像(不存在)的东西:

from tensorflow.core.framework import summary_pb2
value = summary_pb2.Summary.Value(tag='Accuracy', simple_value=0.95)
my_summary = summary_pb2.Summary(value=[value])

summary_writer = tf.summary.FileWriter()
summary_writer.add_summary(summary)

UPD:请注意,我提供了一个示例,说明如何在不调用value = summary_pb2.Summary.Text(tag='MyTag', str='Arbitrary text come here') 的情况下创建任意标量摘要。我希望能够为文本做到这一点。

2 个答案:

答案 0 :(得分:8)

我一直在寻找答案。看一下TensorFlow / Board的一些源代码,我找到了一种似乎有效的方法(我不知道是否存在更简单的解决方案)。

value = "Random text"
text_tensor = tf.make_tensor_proto(value, dtype=tf.string)
meta = tf.SummaryMetadata()
meta.plugin_data.plugin_name = "text"
summary = tf.Summary()
summary.value.add(tag="whatever", metadata=meta, tensor=text_tensor)
summary_writer.add_summary(summary)

答案 1 :(得分:4)

您必须使用tf.summary.text模块。请查看以下简单示例:

summary_op1 = tf.summary.text('tag1', tf.convert_to_tensor('Tag1: Random Text 1'))
summary_op2 = tf.summary.text('tag2', tf.convert_to_tensor('Tag2: Random Text 2'))
summary_op3 = tf.summary.text('tag3', tf.convert_to_tensor('Tag3: Random Text 3'))

with tf.Session() as sess:
    summary_writer = tf.summary.FileWriter('./Tensorboard', sess.graph)
    for index, summary_op in enumerate([summary_op1, summary_op2, summary_op3]):
        text = sess.run(summary_op)
        summary_writer.add_summary(text, index)
summary_writer.close()

您将在Tensorboard中获得类似的输出:

enter image description here

希望这个答案可以帮到你。