How to Use TensorBoardX for Logging Machine Learning Experiments

Sep 25, 2023 | Data Science

TensorBoardX is a powerful tool that allows you to record various metrics during your machine learning experiments. This blog will guide you through the process of utilizing TensorBoardX by providing step-by-step instructions, simple examples, and troubleshooting tips.

Getting Started with TensorBoardX

Before diving into the code, you need to install the TensorBoardX library. Here’s how you can do it:

  • Open your terminal.
  • Run the following command to install TensorBoardX via pip:
  • pip install tensorboardX
  • If you prefer to build from source, use:
  • pip install git+https://github.com/lanpa/tensorboardX
  • You can also install crc32c to improve performance:
  • pip install crc32c
  • To utilize the add_audio() function with enhanced performance, install soundfile:
  • pip install soundfile

Writing TensorBoard Events

The following is a sample script that demonstrates how to log various types of data (such as scalars, images, and audio) using TensorBoardX. Think of TensorBoardX as your art studio, where every brushstroke (data point) contributes to the final masterpiece (your machine learning model’s performance).

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)
    
    # Grouped data logging
    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', {
        'xsin(x)': n_iter * np.sin(n_iter),
        'xcos(x)': n_iter * np.cos(n_iter),
        'arctan(x)': np.arctan(n_iter)
    }, n_iter)

    dummy_img = torch.rand(32, 3, 64, 64) 
    if n_iter % 10 == 0:
        x = vutils.make_grid(dummy_img, normalize=True, scale_each=True)
        writer.add_image('Image', x, n_iter)
        
        # Generate dummy audio
        dummy_audio = torch.zeros(sample_rate * 2)
        for i in range(x.size(0)):
            dummy_audio[i] = np.cos(freqs[n_iter // 10] * np.pi * float(i) / sample_rate)
        writer.add_audio('myAudio', dummy_audio, n_iter, sample_rate=sample_rate)
        
        writer.add_text('Text', f'text logged at step: {n_iter}', n_iter)

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

        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 for external processing
writer.export_scalars_to_json('all_scalars.json')
writer.close()

Explaining the Code

The provided code simulates the process of logging various metrics to TensorBoard, much like an artist compiling sketches before creating a grand painting. The ‘writer’ acts as your canvas:

  • Creating a writer: Think of it as your blank canvas.
  • Logging Scalars: These are simple measurements, like noting down height and width on a sticky note as you sketch.
  • Logging Images: You create beautiful images (dummy images) that contribute to the overall quality of your work.
  • Logging Audio: Each audio wave imitates the sounds made in a gallery, adding another dimension to your audience’s experience.
  • Exporting Data: Finally, you save your masterpiece for others to admire, ensuring that your processes are preserved.

Running the Experiment

Once you have logged your data, you can visualize it. To do this:

  • Open a terminal and navigate to your project folder.
  • Run TensorBoard using the following command:
  • tensorboard --logdir runs
  • Now, open your browser and go to http://localhost:6006 to see your logged data!

Troubleshooting

If you encounter issues while using TensorBoardX, consider the following tips:

  • Version Compatibility: Ensure you are using compatible versions of PyTorch, TensorBoard, and TensorBoardX. Refer to the documentation for guidance.
  • No Data Appearing: Check the logdir specified in your TensorBoard command matches the one used in your SummaryWriter.
  • Installation Issues: If you face problems during installation, try reinstalling using pip or building from source.

For more insights, updates, or to collaborate on AI development projects, stay connected with fxis.ai.

Conclusion

Using TensorBoardX allows you to efficiently track progress in your experiments and visualize metrics in a user-friendly manner. By following the steps in this guide, you are on your way to creating detailed, insightful visualizations that will enhance your machine learning workflow.

At fxis.ai, we believe that such advancements are crucial for the future of AI, as they enable more comprehensive and effective solutions. Our team is continually exploring new methodologies to push the envelope in artificial intelligence, ensuring that our clients benefit from the latest technological innovations.

Stay Informed with the Newest F(x) Insights and Blogs

Tech News and Blog Highlights, Straight to Your Inbox