Explicit Reporting - Jupyter Notebook

The Allegro_Trains_logging_example.ipynb example demonstrates integrating Trains explicit reporting running in a Jupyter Notebook. All Trains explicit reporting works with Jupyter Notebook. This example includes several types of explicit reporting, including scalars, some plots, and media.

Open in Google Colab

In the trains GitHub repository, this example includes a clickable icon to open the notebook in Google Colab.

Scalars

To reports scalars, call the Logger.report_scalar method. The scalar plots appear in RESULTS > SCALARS.

# report two scalar series on two different graphs
for i in range(10):
    logger.report_scalar("graph A", "series A", iteration=i, value=1./(i+1))
    logger.report_scalar("graph B", "series B", iteration=i, value=10./(i+1))

image

# report two scalar series on the same graph
for i in range(10):
    logger.report_scalar("unified graph", "series A", iteration=i, value=1./(i+1))
    logger.report_scalar("unified graph", "series B", iteration=i, value=10./(i+1))

image

Plots

Plots appear in RESULTS > PLOTS.

2D Plots

Report 2D scatter plots by calling the Logger.report_scatter2d method. Use the mode parameter to plot data points as markers, or both lines and markers.

scatter2d = np.hstack(
    (np.atleast_2d(np.arange(0, 10)).T, np.random.randint(10, size=(10, 1)))
)
# report 2d scatter plot with markers
logger.report_scatter2d(
    "example_scatter",
    "series_lines+markers",
    iteration=iteration,
    scatter=scatter2d,
    xaxis="title x",
    yaxis="title y",
    mode='lines+markers'
)

image

3D Plots

To plot a series as a 3-dimensional scatter plot, use the Logger.report_scatter3d method.

# report 3d scatter plot
scatter3d = np.random.randint(10, size=(10, 3))
logger.report_scatter3d(
    "example_scatter_3d",
    "series_xyz",
    iteration=iteration,
    scatter=scatter3d,
    xaxis="title x",
    yaxis="title y",
    zaxis="title z",
)

image

To plot a series as a surface plot, use the Logger.report_surface method.

# report 3d surface
surface = np.random.randint(10, size=(10, 10))
logger.report_surface(
    "example_surface",
    "series1",
    iteration=iteration,
    matrix=surface,
    xaxis="title X",
    yaxis="title Y",
    zaxis="title Z",
)

image

Confusion matrices

Report confusion matrices by calling the Logger.report_matrix method.

# report confusion matrix
confusion = np.random.randint(10, size=(10, 10))
logger.report_matrix(
    "example_confusion",
    "ignored",
    iteration=iteration,
    matrix=confusion,
    xaxis="title X",
    yaxis="title Y",
)

image

Histograms

Report histograms by calling the Logger.report_histogram method. To report more than one series on the same plot, use same the title argument.

# report a single histogram
histogram = np.random.randint(10, size=10)
logger.report_histogram(
    "single_histogram",
    "random histogram",
    iteration=iteration,
    values=histogram,
    xaxis="title x",
    yaxis="title y",
)

image

# report a two histograms on the same plot
histogram1 = np.random.randint(13, size=10)
histogram2 = histogram * 0.75
logger.report_histogram(
    "two_histogram",
    "series 1",
    iteration=iteration,
    values=histogram1,
    xaxis="title x",
    yaxis="title y",
)
logger.report_histogram(
    "two_histogram",
    "series 2",
    iteration=iteration,
    values=histogram2,
    xaxis="title x",
    yaxis="title y",
)

image

Media

Report audio, HTML, image, and video by calling the Logger.report_media method using the local_path parameter. They appear in RESULTS > DEBUG SAMPLES.

The media for these examples is downloaded using the StorageManager.get_local_copy method.

For example, download an image:

image_local_copy = StorageManager.get_local_copy(
    remote_url="https://pytorch.org/tutorials/_static/img/neural-style/picasso.jpg",
    name="picasso.jpg"
)

Audio

logger.report_media('audio', 'pink panther', iteration=1, local_path=audio_local_copy)

image

HTML

logger.report_media("html", "url_html", iteration=1, url="https://allegro.ai/docs/index.html")

image

Images

logger.report_image("image", "image from url", iteration=100, local_path=image_local_copy)

image

Video

logger.report_media('video', 'big bunny', iteration=1, local_path=video_local_copy)

image

Text

Report text messages by calling the Logger.report_text.

logger.report_text("hello, this is plain text")

image