将`tf.Summary`对象序列化为`string` Tensor

时间:2018-07-19 14:37:36

标签: python tensorflow tensorflow-estimator

我尝试生成要在张量板上显示的图像摘要。这在渴望的执行环境中起作用。

现在,我尝试使用eval_metric_ops返回执行操作的命令以在计算图执行期间计算度量。为此,我依靠tf.py_func进行指标计算和绘图。该功能签名是

tf.py_func(
    func,
    inp,
    Tout,
    stateful=True,
    name=None
)

其中Tout是函数的返回类型。我设法使其适用于简单的指标(浮点值)。据我了解,我需要为摘要定义一个string返回类型,将在重建我的图像后对其进行解析。

这是阻止点。

我使用以下内容构建摘要:

summ = tf.Summary(value=[
  tf.Summary.Value(
    tag=metric_name,
    image=tf.Summary.Image(
       encoded_image_string=encode_image_array_as_png_str(
         self._last_metrics[metric_name])))])

按原样返回它,我得到:W tensorflow/core/framework/op_kernel.cc:1306] Unimplemented: Unsupported object type Summary

返回str(summ)得到:WARNING:tensorflow:Skipping summary for ..., cannot parse string to Summary

我还尝试使用以下方法进行构建:

tf.summary.image(
    name,
    tensor,
    max_outputs=3,
    collections=None,
    family=None
)

但这给出了:W tensorflow/core/framework/op_kernel.cc:1306] Unimplemented: Unsupported object type Tensor


您是否知道如何将Summary序列化为可迭代的字符串/字节/无论可解释为字符串Tensor的方式,之后都可以将其解析回图像Summary。

谢谢。

1 个答案:

答案 0 :(得分:1)

对我感到羞耻。

与tensorflow中的许多其他类一样,Summary由协议缓冲区消息定义,因此实现了SerializeToString()。 因此,仅返回summ.SerializeToString()即可!