Bagaimana cara menampilkan lebih dari 10 gambar di Tensorboard?

Saya perhatikan bahwa tidak peduli berapa banyak gambar yang saya simpan ke file log tensorboard, tensorboard hanya akan menampilkan 10 gambar (per tag).

Bagaimana cara menambah jumlah gambar atau setidaknya memilih gambar mana yang akan ditampilkan?


Untuk mereproduksi apa yang saya maksud, jalankan MCVE berikut:

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)

Ini membuat folder runs tempat data disimpan. Dari folder yang sama jalankan tensorboard --logdir runs, buka browser dan buka localhost:6006 (atau ganti 6006 dengan port tensorboard apa pun yang ditampilkan setelah memulainya). Lalu buka tab bernama "gambar" dan gerakkan penggeser di atas gambar skala abu-abu.

Dalam kasus saya ini hanya menampilkan gambar dari langkah-langkah

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

yang bahkan jaraknya tidak bagus, tetapi terlihat cukup acak. Saya lebih suka memilikinya

  1. melihat lebih dari 10 gambar yang saya simpan, dan
  2. memiliki jarak jumlah langkah yang lebih merata antara setiap gambar yang ditampilkan.

Bagaimana saya bisa mencapainya?

EDIT: Saya baru saja menemukan opsi --samples_per_plugin dan mencoba tensorboard --logdir runs --samples_per_plugin "images=100". Ini memang menambah jumlah gambar, namun hanya menampilkan gambar dari langkah k = 0,1,2,3....,78, namun tidak ada gambar dari atas 78.


person flawr    schedule 27.08.2019    source sumber
comment
Mungkin tidak terkait, tetapi menurut dokumentasi Anda harus meneruskan dataformats="CHW" karena data Anda memiliki saluran tunggal.   -  person Szymon Maszke    schedule 27.08.2019
comment
@SzymonMaszke Sebenarnya tidak diperlukan karena dataformats="CHW" secara default, lihat dokumen.   -  person flawr    schedule 27.08.2019


Jawaban (1)


Anda mungkin harus menunggu sedikit lebih lama untuk menunggu semua data dimuat, tetapi ini memang solusi yang tepat, lihat --help:

--samples_per_plugin: Daftar pasangan plugin_name=num_samples opsional yang dipisahkan koma untuk secara eksplisit menentukan berapa banyak sampel yang akan disimpan per tag untuk plugin tersebut. Untuk plugin yang tidak ditentukan, TensorBoard secara acak menurunkan sampel ringkasan yang dicatat ke nilai yang wajar untuk mencegah kesalahan kehabisan memori untuk tugas yang berjalan lama. Tanda ini memungkinkan kontrol yang baik atas downsampling tersebut. Perhatikan bahwa 0 berarti menyimpan semua sampel jenis itu. Misalnya, "scalars=500,images=0" menyimpan 500 skalar dan semua gambar. Sebagian besar pengguna tidak perlu menyetel tanda ini. (bawaan: '')

Mengenai sampel acak: Ini juga benar, ada semacam keacakan, dari FAQ:

Apakah data saya sedang diturunkan sampelnya? Apakah saya benar-benar melihat semua datanya?

TensorBoard menggunakan pengambilan sampel reservoir untuk menurunkan sampel data Anda agar dapat dimuat ke dalam RAM. Anda dapat mengubah jumlah elemen yang akan disimpan per tag di tensorboard/backend/application.py.

person flawr    schedule 18.12.2019