Краткое описание изображений Tensorboard - PullRequest
0 голосов
/ 04 июля 2018

Я использую 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)

Я понимаю, что могу получить нужные мне ползунки, если добавлю метод визуализации в качестве операции на график, чтобы избежать проблемы дублирования имен. Но мне нужно иметь возможность проходить через мои оцененные значения тензора, чтобы выполнить t-SNE для создания вложений ...

Я застрял на этом некоторое время, поэтому любые советы приветствуются!

1 Ответ

0 голосов
/ 18 октября 2018

Этого можно добиться, используя 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, как я и хотел. ?

...