# How to Use Tensorboard in Pytorch

## 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:

- https://stackoverflow.com/questions/37144211/rescale-tensorboard-summaries-plot
- https://github.com/tensorflow/tensorboard/issues/273

# 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

- Tensorboard tutorial: https://pytorch.org/tutorials/intermediate/tensorboard_tutorial.html
- PyTorch Tensorboard doc: https://pytorch.org/docs/stable/tensorboard.html