| torch.utils.tensorboard | 
 | =================================== | 
 |  | 
 | Before going further, more details on TensorBoard can be found at | 
 | https://www.tensorflow.org/tensorboard/ | 
 |  | 
 | Once you've installed TensorBoard, these utilities let you log PyTorch models | 
 | and metrics into a directory for visualization within the TensorBoard UI. | 
 | Scalars, images, histograms, graphs, and embedding visualizations are all | 
 | supported for PyTorch models and tensors as well as Caffe2 nets and blobs. | 
 |  | 
 | The SummaryWriter class is your main entry to log data for consumption | 
 | and visualization by TensorBoard. For example: | 
 |  | 
 | .. code:: python | 
 |  | 
 |  | 
 |     import torch | 
 |     import torchvision | 
 |     from torch.utils.tensorboard import SummaryWriter | 
 |     from torchvision import datasets, transforms | 
 |  | 
 |     # Writer will output to ./runs/ directory by default | 
 |     writer = SummaryWriter() | 
 |  | 
 |     transform = transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.5,), (0.5,))]) | 
 |     trainset = datasets.MNIST('mnist_train', train=True, download=True, transform=transform) | 
 |     trainloader = torch.utils.data.DataLoader(trainset, batch_size=64, shuffle=True) | 
 |     model = torchvision.models.resnet50(False) | 
 |     # Have ResNet model take in grayscale rather than RGB | 
 |     model.conv1 = torch.nn.Conv2d(1, 64, kernel_size=7, stride=2, padding=3, bias=False) | 
 |     images, labels = next(iter(trainloader)) | 
 |  | 
 |     grid = torchvision.utils.make_grid(images) | 
 |     writer.add_image('images', grid, 0) | 
 |     writer.add_graph(model, images) | 
 |     writer.close() | 
 |  | 
 | This can then be visualized with TensorBoard, which should be installable | 
 | and runnable with:: | 
 |  | 
 |     pip install tensorboard | 
 |     tensorboard --logdir=runs | 
 |  | 
 |  | 
 | Lots of information can be logged for one experiment. To avoid cluttering | 
 | the UI and have better result clustering, we can group plots by naming them | 
 | hierarchically. For example, "Loss/train" and "Loss/test" will be grouped | 
 | together, while "Accuracy/train" and "Accuracy/test" will be grouped separately | 
 | in the TensorBoard interface. | 
 |  | 
 | .. code:: python | 
 |  | 
 |  | 
 |     from torch.utils.tensorboard import SummaryWriter | 
 |     import numpy as np | 
 |  | 
 |     writer = SummaryWriter() | 
 |  | 
 |     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) | 
 |  | 
 |  | 
 | Expected result: | 
 |  | 
 | .. image:: _static/img/tensorboard/hier_tags.png | 
 |     :scale: 75 % | 
 |  | 
 | | | 
 | | | 
 |  | 
 | .. currentmodule:: torch.utils.tensorboard.writer | 
 |  | 
 | .. autoclass:: SummaryWriter | 
 |  | 
 |    .. automethod:: __init__ | 
 |    .. automethod:: add_scalar | 
 |    .. automethod:: add_scalars | 
 |    .. automethod:: add_histogram | 
 |    .. automethod:: add_image | 
 |    .. automethod:: add_images | 
 |    .. automethod:: add_figure | 
 |    .. automethod:: add_video | 
 |    .. automethod:: add_audio | 
 |    .. automethod:: add_text | 
 |    .. automethod:: add_graph | 
 |    .. automethod:: add_embedding | 
 |    .. automethod:: add_pr_curve | 
 |    .. automethod:: add_custom_scalars | 
 |    .. automethod:: add_mesh | 
 |    .. automethod:: add_hparams | 
 |    .. automethod:: flush | 
 |    .. automethod:: close |