Explicit Reporting - Jupyter Notebook
Trains is now ClearML
This documentation applies to the legacy Trains versions. For the latest documentation, see ClearML.
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))
# 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))
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'
)
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",
)
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",
)
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",
)
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",
)
# 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",
)
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)
HTML
logger.report_media("html", "url_html", iteration=1, url="https://allegro.ai/docs/index.html")
Images
logger.report_image("image", "image from url", iteration=100, local_path=image_local_copy)
Video
logger.report_media('video', 'big bunny', iteration=1, local_path=video_local_copy)
Text
Report text messages by calling the Logger.report_text.
logger.report_text("hello, this is plain text")