Model Integration
In this section, we will set up our classification model by either importing or building it.
UI
CLI
The project name, MNIST, is set with the
leap init
command, as discussed in Dataset Integration above.The project page contains the Versions, Network and Dashboard views. To toggle them, click the
buttons at the top.

We'll start by pointing the model's dataset block to our
mnist
dataset. This will update the Dataset Block with the relevant input.In the Network view, click the Dataset Block to display the Dataset Details panel on the right, then click Connect Dataset and select the
mnist
dataset from the list. Importing a Model
Building a Model
CLI
Tensorleap can import a model saved by Tensorflow (PB/H5/JSON_TF2) and PyTorch (ONNX). For more information, see Import Model.
In this sample code, a simple CNN model is created using Tensorflow and then saved as a file named
mnist-cnn.h5
.import tensorflow as tf
input = tf.keras.layers.Input(shape=(28, 28, 1))
layer = tf.keras.layers.Conv2D(32, [3, 3], activation='relu')(input)
layer = tf.keras.layers.MaxPooling2D(pool_size=(2, 2))(layer)
layer = tf.keras.layers.Conv2D(64, [3, 3], activation='relu')(layer)
layer = tf.keras.layers.MaxPooling2D(pool_size=(2, 2))(layer)
layer = tf.keras.layers.Flatten()(layer)
layer = tf.keras.layers.Dropout(0.5)(layer)
output = tf.keras.layers.Dense(10, activation='softmax')(layer)
model = tf.keras.Model(inputs=input, outputs=output)
model.save('mnist-cnn.h5')
For your convenience, you can also download this file here:
mnist-cnn.h5
156KB
Binary
- 1.In the Network view, click thebutton to open the
Import Model
panel. - 2.Set the Revision Name to
mnist-cnn
and the Model Name topre-trained
. - 3.For File Type, select
H5_TF2,
then choosemnist-cnn.h5
in the Upload File field. - 4.Click the Import button.
- 5.Once completed, the imported model,
mnist-cnn,
is added to the Versions view. Position your cursor over that version, clickto Open Commit. - 6.Back in the Network view, set the Dataset Block to point to the
mnist
Dataset.

Importing a Model and Dataset Block Setup (click-to-zoom)
In this section, we will add layers, update their properties, and connect them together to form the model.
The model we'll build is based on a small CNN (Convolutional Neural Network):
Layers | Properties |
---|---|
Convo2D | filters=32, kernel_size=(3, 3), activation="relu" |
MaxPooling2D | pool_size=(2, 2) |
Conv2D | filters=64, kernel_size=(3, 3), activation="relu" |
MaxPooling2D | pool_size=(2, 2) |
Flatten | |
Dropout | rate=0.5 |
Dense | units=10, activation="softmax" |
- 1.
- 2.Update the corresponding properties in the Layer Properties view on the right. More info at Layer Properties.
- 3.Connect the Dataset to the first layer, and then connect all the layers in order. More info at Connections.
All steps are illustrated below.

Add Layers and Connect them
Copy the
mnist_cnn.py
file to the mnist
folder we created in Dataset Integration. This file defines the CNN model, and can be found here:mnist_cnn.py
612B
Text
Next, edit the
.tensorleap/model.py
file and point it to the model defined in mnist_cnn.py
:from pathlib import Path
from mnist_cnn import build_model
def leap_save_model(target_file_path: Path):
# Load your model
model = build_model()
# Save it to the path supplied as an arugment (has a .h5 suffix)
model.save(target_file_path)
The function
leap_save_model
gets called by the CLI on leap push
, with the argument target_file_path
, which is the location where the model is to be saved.To validate the correctness of our code, run the following command:
leap check --all
Upon a successful check, we can continue to pushing the model:
leap push --model --description=mnist-cnn --model-name=pre-trained --branch-name=master
Once
leap push
completes, open the Versions view in the UI, where you should now see the imported model, mnist_cnn
. - Position your cursor over
mnist_cnn
and clickto Open Commit. - Back on the Network view, set the Dataset Block to point to the
mnist
Dataset Instance, and connect it to the first layer.
Once all layers have been connected to each other, the model should look like this:

Connected Layers and Dataset
Each block shows the calculated output shape affected by the preceding layers.
In this section, we will set the Categorical Crossentropy loss function, and connect it to both the dataset's ground truth and the last layer in our model. We'll then add an Adam Optimizer block and connect it to the loss block. For more information, see Loss and Optimizer.
After completing this section, our model will be ready for training.
- 1.Right-click and add the following:
- Loss -> CategoricalCrossentropy
- GroundTruth, and set it to
Ground Truth - classes
- Optimizer -> Adam
- 2.Connect the last Dense layer and the GroundTruth to the CategoricalCrossentropy block. Additionally, connect the Loss block to the Adam optimizer.
All steps are illustrated below.

Add Loss and Optimizer
There must be at least one visualizer connected to the model's input for analysis. To add the Visualizer for the input, follow the steps below.
- 1.Right-click and choose Visualizer to add it.
- 2.Click the Visualizer node to open up the Visualizer Details on the right.
- 3.Choose
Image
from theSelected Visualizer
list. - 4.Connect the Dataset node output to the input of the Visualizer node.
Additional Visualizers will be connected to the prediction and ground truth, in order to visualize the model's prediction output. Follow the steps below:
- 1.Right-click and choose Visualizer to add it.
- 2.Click the Visualizer node to open up the Visualizer Details on the right.
- 3.Choose
HorizontalBar
from theSelected Visualizer
list. - 4.Connect the last Dense layer output to the input of the Visualizer node.
- 5.Repeat the steps, and connect the second visualizer to the GroundTruth node's output.

Add Visualizers
Great! Your first version is ready to be saved.

Full Model with Dataset, Visualizers, Layers, Loss and an Optimizer
Click the
button and set the

Revision Name
to cnn-2
(Convolution Neural Network with 2 convolutional layers). This adds the new version to the Versions view. For more information, see Save a Version.
The newly-saved version appears on the Versions view
Tensorleap can import trained and untrained models. In our case, the model was created from scratch and needs to be trained.
To train the model, click
from the top bar. Let's set the
. For more information, see Evaluate/Train Model.

Number of Epochs
to 10
and click 

Train Model Dialog
Once training begins, you can start tracking metrics in real-time.
Click
for a Line Dashlet, set the name to

Loss
, and turn on Split series by subset
to separate training
and validation
metrics.
Add a Dashboard and a Loss Dashlet
Next, add another Line Dashlet for the accuracy. Follow all the previous steps to add it and set the Dashlet Name to
Accuracy
and set the Y-Axis to metrics.Accuracy
. Do not forget turn on Split series by subset
.As training progresses, you should see loss values declining and accuracy values increasing.
When training is completed, the model achieved an accuracy of 98%.

Loss vs Batch

Accuracy vs Batch - Reaching
98%
AccuracyTensorleap provides a host of innovative tools for model analysis and debugging. It tracks how each sample flows through each layer, and how each learned feature flows through the model. It also stores metrics in a big dataset to analyze the model's response to data.
We've discussed integrating and training our model. It's now time to analyze it. The next part of this tutorial will demonstrate various analyses of the model and data.
Last modified 7mo ago