• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1torch.utils.tensorboard
2===================================
3.. automodule:: torch.utils.tensorboard
4
5Before going further, more details on TensorBoard can be found at
6https://www.tensorflow.org/tensorboard/
7
8Once you've installed TensorBoard, these utilities let you log PyTorch models
9and metrics into a directory for visualization within the TensorBoard UI.
10Scalars, images, histograms, graphs, and embedding visualizations are all
11supported for PyTorch models and tensors as well as Caffe2 nets and blobs.
12
13The SummaryWriter class is your main entry to log data for consumption
14and visualization by TensorBoard. For example:
15
16.. code:: python
17
18
19    import torch
20    import torchvision
21    from torch.utils.tensorboard import SummaryWriter
22    from torchvision import datasets, transforms
23
24    # Writer will output to ./runs/ directory by default
25    writer = SummaryWriter()
26
27    transform = transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.5,), (0.5,))])
28    trainset = datasets.MNIST('mnist_train', train=True, download=True, transform=transform)
29    trainloader = torch.utils.data.DataLoader(trainset, batch_size=64, shuffle=True)
30    model = torchvision.models.resnet50(False)
31    # Have ResNet model take in grayscale rather than RGB
32    model.conv1 = torch.nn.Conv2d(1, 64, kernel_size=7, stride=2, padding=3, bias=False)
33    images, labels = next(iter(trainloader))
34
35    grid = torchvision.utils.make_grid(images)
36    writer.add_image('images', grid, 0)
37    writer.add_graph(model, images)
38    writer.close()
39
40This can then be visualized with TensorBoard, which should be installable
41and runnable with::
42
43    pip install tensorboard
44    tensorboard --logdir=runs
45
46
47Lots of information can be logged for one experiment. To avoid cluttering
48the UI and have better result clustering, we can group plots by naming them
49hierarchically. For example, "Loss/train" and "Loss/test" will be grouped
50together, while "Accuracy/train" and "Accuracy/test" will be grouped separately
51in the TensorBoard interface.
52
53.. code:: python
54
55
56    from torch.utils.tensorboard import SummaryWriter
57    import numpy as np
58
59    writer = SummaryWriter()
60
61    for n_iter in range(100):
62        writer.add_scalar('Loss/train', np.random.random(), n_iter)
63        writer.add_scalar('Loss/test', np.random.random(), n_iter)
64        writer.add_scalar('Accuracy/train', np.random.random(), n_iter)
65        writer.add_scalar('Accuracy/test', np.random.random(), n_iter)
66
67
68Expected result:
69
70.. image:: _static/img/tensorboard/hier_tags.png
71    :scale: 75 %
72
73|
74|
75
76.. currentmodule:: torch.utils.tensorboard.writer
77
78.. autoclass:: SummaryWriter
79
80   .. automethod:: __init__
81   .. automethod:: add_scalar
82   .. automethod:: add_scalars
83   .. automethod:: add_histogram
84   .. automethod:: add_image
85   .. automethod:: add_images
86   .. automethod:: add_figure
87   .. automethod:: add_video
88   .. automethod:: add_audio
89   .. automethod:: add_text
90   .. automethod:: add_graph
91   .. automethod:: add_embedding
92   .. automethod:: add_pr_curve
93   .. automethod:: add_custom_scalars
94   .. automethod:: add_mesh
95   .. automethod:: add_hparams
96   .. automethod:: flush
97   .. automethod:: close
98