Skip to main content
  1. Posts/

How to Use Tensorboard in Pytorch

··345 words·2 mins·
Table of Contents

This is a brief note on how to use Tensorboard in PyTorch.

Install
#

First we need to install tensorboard:

pip install tensorboard

SummaryWriter
#

The main interface we use is SummaryWriter. It has many builtin functions, such as add_scalar, add_image, add_graph (for torch models) etc.

For most use cases, we just need to use add_scalar().

import numpy as np
import os
from torch.utils.tensorboard import SummaryWriter


def main():
    log_dir = "exp_log"
    if not os.path.exists(log_dir):
        os.makedirs(log_dir)

    writer = SummaryWriter(log_dir=log_dir)
    for i in range(50):
        writer.add_scalar("my curve", np.random.random(), i)

    # need to close the writer after training
    writer.close()

The first argument is the tag given to this value series.

Group plots
#

We can also group the plot like this:

for n_iter in range(100):
    writer.add_scalar('Loss/train', np.random.random(), n_iter)
    writer.add_scalar('Loss/test', np.random.random(), n_iter)
    writer.add_scalar('Accuracy/train', np.random.random(), n_iter)
    writer.add_scalar('Accuracy/test', np.random.random(), n_iter)

In the visualization, we will get two groups, one for Loss and one for Accuracy. Each group has two plots, for train and test respectively.

Compare stats in the same plot
#

Often we want to show/compare several curves on the same plot. This can be achieved with add_scalars():

for n_iter in range(100):
    writer.add_scalars('Loss', {'train': np.random.random(),
                                'test': np.random.random()}, n_iter)

    writer.add_scalars('Accuracy', {'train': np.random.random(),
                                    'test': np.random.random()}, n_iter)

In the above code, we have two groups, and each group has one plot showing both train and test stats.

Change the axis scale?
#

Sometimes the scale for x and y axis may not be right. The first thing you can do is to disable outlier removal, since it is enabled by default.

Or we can manually select a region using the mouse to only show that region. After tensorboard version 2.5, you can set axis range in the tensorboard web interface interactively, thanks to the work of this pr.

ref:

Visualize the plot
#

To actually show the visualizations, we can run the following command:

tensorboard --logdir=exp_log

The argument --logdir should be followed one of valid tensorboard logs you have written during your experiment. Then you can open the browser and check the plots.

References
#

Related

Server Autologin with Expect
··404 words·2 mins
Databricks Cli Usage
·141 words·1 min
File Systems in Databricks
·304 words·2 mins