Skip to content

roytseng-tw/tensorboard-pytorch

This branch is 358 commits behind lanpa/tensorboardX:master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

87eee66 · Apr 30, 2018
Feb 16, 2018
Oct 16, 2017
Jan 18, 2018
Apr 30, 2018
Apr 12, 2018
Dec 31, 2017
Oct 11, 2017
Apr 28, 2018
Apr 28, 2018
Nov 10, 2017
Apr 21, 2018
Apr 28, 2018
Aug 28, 2017
Apr 12, 2018
Feb 21, 2018
Apr 28, 2018
Mar 16, 2018
Apr 30, 2018
Apr 21, 2018
Apr 28, 2018

Repository files navigation

tensorboardX

Build Status PyPI version Downloads Documentation Status

Write TensorBoard events with simple function call.

  • Support scalar, image, histogram, audio, text, graph, onnx_graph, embedding, pr_curve and video summaries.

  • Demo

  • requirement for demo_graph.py is tensorboardX>=1.2 and pytorch>=0.4

  • FAQ

Install

Tested on anaconda2 / anaconda3, with PyTorch 0.4 / torchvision 0.2 / tensorboard 1.7.0

pip install tensorboardX

or build from source:

pip install git+https://github.com/lanpa/tensorboard-pytorch

Example

  • Run the demo script: python demo.py
  • Use TensorBoard with tensorboard --logdir runs (needs to install TensorFlow)
# demo.py

import torch
import torchvision.utils as vutils
import numpy as np
import torchvision.models as models
from torchvision import datasets
from tensorboardX import SummaryWriter

resnet18 = models.resnet18(False)
writer = SummaryWriter()
sample_rate = 44100
freqs = [262, 294, 330, 349, 392, 440, 440, 440, 440, 440, 440]

for n_iter in range(100):

    dummy_s1 = torch.rand(1)
    dummy_s2 = torch.rand(1)
    # data grouping by `slash`
    writer.add_scalar('data/scalar1', dummy_s1[0], n_iter)
    writer.add_scalar('data/scalar2', dummy_s2[0], n_iter)

    writer.add_scalars('data/scalar_group', {'xsinx': n_iter * np.sin(n_iter),
                                             'xcosx': n_iter * np.cos(n_iter),
                                             'arctanx': np.arctan(n_iter)}, n_iter)

    dummy_img = torch.rand(32, 3, 64, 64)  # output from network
    if n_iter % 10 == 0:
        x = vutils.make_grid(dummy_img, normalize=True, scale_each=True)
        writer.add_image('Image', x, n_iter)

        dummy_audio = torch.zeros(sample_rate * 2)
        for i in range(x.size(0)):
            # amplitude of sound should in [-1, 1]
            dummy_audio[i] = np.cos(freqs[n_iter // 10] * np.pi * float(i) / float(sample_rate))
        writer.add_audio('myAudio', dummy_audio, n_iter, sample_rate=sample_rate)

        writer.add_text('Text', 'text logged at step:' + str(n_iter), n_iter)

        for name, param in resnet18.named_parameters():
            writer.add_histogram(name, param.clone().cpu().data.numpy(), n_iter)

        # needs tensorboard 0.4RC or later
        writer.add_pr_curve('xoxo', np.random.randint(2, size=100), np.random.rand(100), n_iter)

dataset = datasets.MNIST('mnist', train=False, download=True)
images = dataset.test_data[:100].float()
label = dataset.test_labels[:100]

features = images.view(100, 784)
writer.add_embedding(features, metadata=label, label_img=images.unsqueeze(1))

# export scalar data to JSON for external processing
writer.export_scalars_to_json("./all_scalars.json")
writer.close()

Screenshots

Tweaks

To add more ticks for the slider (show more image history), you can modify the hardcoded event_accumulator in ~/anaconda3/lib/python3.6/site-packages/tensorflow/tensorboard/backend/application.py as you wish.

For tensorflow-tensorboard > 0.17 see lanpa#44

Reference

About

tensorboard for pytorch (and chainer, mxnet, numpy, ...)

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 99.9%
  • Shell 0.1%