张量板图像摘要

时间:2018-07-03 23:09:26

标签: python tensorflow tensorboard

我在训练期间使用Matplotlib在每个时期创建自定义t-SNE嵌入图。我希望这些图以滑块格式显示在Tensorboard上,例如此MNST示例:

slider image example

但是相反,每批图都显示为每个时期单独的摘要,这以后很难检查。见下文:

multiple distinct image summaries

它似乎正在创建多个具有相同名称的图像摘要,因此添加_X后缀而不是覆盖或添加到我想要的滑块上。同样,当我使用family参数时,图像的分组方式不同,但仍将_X附加到摘要名称范围。

grouped distinct image summaries

这是我的代码,用于创建自定义图并使用自定义图添加到tf.summary.image并将评估后的摘要添加到摘要编写器中。

def _visualise_embedding(step, summary_writer, features, silhouettes, sample_size=1000):
    '''
    Visualise features embedding image by adding plot to summary writer to track on Tensorboard
    '''
    # Select random sample
    feats_to_sils = list(zip(features, silhouettes))
    shuffle(feats_to_sils)
    feats, sils = zip(*feats_to_sils)
    feats = feats[:sample_size]
    sils = sils[:sample_size]

    # Embed feats to 2 dim space
    embedded_feats = perform_tsne(2, feats)

    # Plot features embedding
    im_bytes = plot_embedding(embedded_feats, sils)

    # Convert PNG buffer to TF image
    image = tf.image.decode_png(im_bytes, channels=4)

    # Add the batch dimension
    image = tf.expand_dims(image, 0)
    summary_op = tf.summary.image("model_projections", image, max_outputs=1, family='family_name')
    # Summary has to be evaluated (converted into a string) before adding to the writer
    summary_writer.add_summary(summary_op.eval(), step)

我知道,如果我将visualize方法添加到图形中以避免名称重复的问题,我可能会得到所需的滑块图。但是我需要能够遍历评估的张量值来执行t-SNE来创建嵌入...

我已经坚持了一段时间,因此不胜感激!

1 个答案:

答案 0 :(得分:2)

这可以通过使用tf.Summary.Image()

来实现

例如:

    im_summary = tf.Summary.Image(encoded_image_string=im_bytes)
    im_summary_value = [tf.Summary.Value(tag=self.confusion_matrix_tensor_name, 
    image=im_summary)]

这是一个summary.proto方法,因此一开始对我来说很明显,因为该方法定义无法通过Tensorflow访问。我只有在github上找到正在使用的代码片段时,才意识到它的功能。

无论哪种方式,它都会像我想要的那样在Tensorboard上以幻灯片形式显示图像摘要。