Как отобразить более 10 изображений в Tensorboard?

Я заметил, что не имеет значения, сколько изображений я сохраняю в файл журнала tensorboard, tensorboard всегда будет отображать только 10 из них (для каждого тега).

Как мы можем увеличить количество изображений или хотя бы выбрать, какие из них будут отображаться?


Чтобы воспроизвести то, что я имею в виду, запустите следующий MCVE:

import torch
from torch.utils.tensorboard import SummaryWriter
tb = SummaryWriter(comment="test")

for k in range(100):
    # create an image with some funny pattern
    b = [n for (n, c) in enumerate(bin(k)) if c == '1']
    img = torch.zeros((1,10,10))
    img[0, b, :] = 0.5
    img =img + img.permute([0, 2, 1])

    # add the image to the tensorboard file
    tb.add_image(tag="test", img_tensor=img, global_step=k)

При этом создается папка runs, в которой сохраняются данные. Из той же папки выполните tensorboard --logdir runs, откройте браузер и перейдите к localhost:6006 (или замените 6006 любым портом, который тензорная панель отображает после запуска). Затем перейдите на вкладку «Изображения» и переместите ползунок над изображением в градациях серого.

В моем случае он отображал только изображения из шагов

k = 3, 20, 24, 32, 37, 49, 52, 53, 67, 78

что даже не является хорошим равномерным интервалом, но выглядит довольно случайным. я бы предпочел иметь

  1. увидеть более 10 изображений, которые я сохранил, и
  2. иметь более равномерное количество шагов между каждым отображаемым изображением.

Как я могу этого добиться?

EDIT: я только что нашел вариант --samples_per_plugin и попробовал tensorboard --logdir runs --samples_per_plugin "images=100". Это действительно увеличило количество изображений, но показало только изображения из шагов k = 0,1,2,3....,78, но не из 78 выше.


person flawr    schedule 27.08.2019    source источник
comment
Вероятно, это не связано, но согласно документации вы должны передать dataformats="CHW", так как ваши данные имеют один канал.   -  person Szymon Maszke    schedule 27.08.2019
comment
@SzymonMaszke На самом деле в этом нет необходимости, так как dataformats="CHW" по умолчанию, см. документы.   -  person flawr    schedule 27.08.2019


Ответы (1)


Вероятно, вам придется подождать немного дольше, чтобы дождаться загрузки всех данных, но это действительно правильное решение, см. --help:

--samples_per_plugin: необязательный список пар plugin_name=num_samples, разделенных запятыми, для явного указания, сколько сэмплов нужно хранить для каждого тега для этого плагина. Для неуказанных плагинов TensorBoard случайным образом уменьшает записанные сводки до разумных значений, чтобы предотвратить ошибки нехватки памяти для длительных заданий. Этот флаг позволяет точно контролировать эту понижающую дискретизацию. Обратите внимание, что 0 означает сохранение всех выборок этого типа. Например, "scalars=500,images=0" содержит 500 скаляров и все изображения. Большинству пользователей не нужно устанавливать этот флаг. (дефолт: '')

Что касается случайных выборок: это тоже верно, в этом есть какая-то случайность, из Часто задаваемые вопросы:

Мои данные подвергаются субдискретизации? Я действительно вижу все данные?

TensorBoard использует сэмплирование из резервуара для понижения дискретизации ваших данных, чтобы их можно было загрузить в ОЗУ. Вы можете изменить количество элементов, которые он будет хранить для каждого тега, в tensorboard/backend/application.py.

person flawr    schedule 18.12.2019