如何在 TensorFlow 中构建任意文本摘要?
Posted
技术标签:
【中文标题】如何在 TensorFlow 中构建任意文本摘要?【英文标题】:How do I construct an arbitrary text summary in TensorFlow? 【发布时间】:2018-02-23 12:55:29 【问题描述】:我想在 TensorBoard 中记录一些任意字符串。
我知道如何处理任意标量:
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)
但是除了任意文本摘要,如何做同样的事情呢? 类似的东西(不存在):
value = summary_pb2.Summary.Text(tag='MyTag', str='Arbitrary text come here')
UPD:请注意,我提供了一个示例,如何在不调用 session.run(...)
的情况下创建任意标量摘要。我也希望能够为 text 做到这一点。
【问题讨论】:
另外结帐this answer 使用tensorboard.summary.text_pb()
的一/两行方法。
【参考方案1】:
我也一直在寻找答案。看了一些 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)
【讨论】:
由于某种原因,这没有出现在我的张量板上。【参考方案2】:你必须使用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 中得到类似这样的输出:
希望这个答案对你有所帮助。
【讨论】:
这不是我要找的。我想在不调用session.run(...)
的情况下创建任意文本摘要。看看我是如何处理标量值的。以上是关于如何在 TensorFlow 中构建任意文本摘要?的主要内容,如果未能解决你的问题,请参考以下文章
TensorFlow文本摘要生成 - 基于注意力的序列到序列模型
TensorFlow文本摘要生成 - 基于注意力的序列到序列模型