Tensorboard 图像摘要

Sop*_*oph 5 python tensorflow tensorboard

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

滑块图像示例

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

多个不同的图像摘要

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

分组不同的图像摘要

这是我的代码,用于创建自定义图并添加到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)
Run Code Online (Sandbox Code Playgroud)

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

我已经被困在这个问题上有一段时间了,所以任何建议都是值得赞赏的!

Sop*_*oph 4

这可以通过使用来实现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)]
Run Code Online (Sandbox Code Playgroud)

这是一种summary.proto方法,所以一开始对我来说很明显,因为方法定义无法通过 Tensorflow 访问。当我在 github 上发现它的代码片段时,我才意识到它的功能。

无论哪种方式,它都会像我想要的那样将图像摘要公开为 Tensorboard 上的幻灯片。