Single Dataset Performance#

This notebooks provides an overview for using and understanding single dataset performance check.

Structure:

What Is the Purpose of the Check?#

This check returns the results from a dict of metrics, in the format metric name: scorer, calculated for the given model dataset. The scorer can be an ignite.Metric or Sklearn scorer. Use this check to evaluate the performance on a single vision dataset such as a test set.

Generate data and model#

from deepchecks.vision.checks import SingleDatasetPerformance
from deepchecks.vision.datasets.classification import mnist
mnist_model = mnist.load_model()
train_ds = mnist.load_dataset(train=True, object_type='VisionData')

Run the check#

We will run the check with the model defined above.

The check will use the default classification metrics - Precision. and Recall.

Validating Input:
|     | 0/1 [Time: 00:00]
Validating Input:
|#####| 1/1 [Time: 00:00]

Ingesting Batches:
|                                                                                                                                                             | 0/157 [Time: 00:00]

Ingesting Batches:
|###############                                                                                                                                              | 15/157 [Time: 00:00]

Ingesting Batches:
|###############################                                                                                                                              | 31/157 [Time: 00:00]

Ingesting Batches:
|##############################################                                                                                                               | 46/157 [Time: 00:00]

Ingesting Batches:
|#############################################################                                                                                                | 61/157 [Time: 00:00]

Ingesting Batches:
|############################################################################                                                                                 | 76/157 [Time: 00:00]

Ingesting Batches:
|############################################################################################                                                                 | 92/157 [Time: 00:00]

Ingesting Batches:
|############################################################################################################                                                 | 108/157 [Time: 00:00]

Ingesting Batches:
|############################################################################################################################                                 | 124/157 [Time: 00:00]

Ingesting Batches:
|############################################################################################################################################                 | 140/157 [Time: 00:00]

Ingesting Batches:
|############################################################################################################################################################ | 156/157 [Time: 00:01]

Ingesting Batches:
|#############################################################################################################################################################| 157/157 [Time: 00:01]


Computing Check:
|     | 0/1 [Time: 00:00]


Computing Check:
|#####| 1/1 [Time: 00:00]
Single Dataset Performance


If you have a GPU, you can speed up this check by passing it as an argument to .run() as device=<your GPU>

To display the results in an IDE like PyCharm, you can use the following code:

#  result.show_in_window()

The result will be displayed in a new window.

Now we will run a check with a metric different from the defaults- F-1.

from ignite.metrics import Fbeta

check = SingleDatasetPerformance(scorers={'f1': Fbeta(1)})
result = check.run(train_ds, mnist_model)
result
Validating Input:
|     | 0/1 [Time: 00:00]
Validating Input:
|#####| 1/1 [Time: 00:00]

Ingesting Batches:
|                                                                                                                                                             | 0/157 [Time: 00:00]

Ingesting Batches:
|###############                                                                                                                                              | 15/157 [Time: 00:00]

Ingesting Batches:
|##############################                                                                                                                               | 30/157 [Time: 00:00]

Ingesting Batches:
|#############################################                                                                                                                | 45/157 [Time: 00:00]

Ingesting Batches:
|############################################################                                                                                                 | 60/157 [Time: 00:00]

Ingesting Batches:
|###########################################################################                                                                                  | 75/157 [Time: 00:00]

Ingesting Batches:
|##########################################################################################                                                                   | 90/157 [Time: 00:00]

Ingesting Batches:
|#########################################################################################################                                                    | 105/157 [Time: 00:00]

Ingesting Batches:
|########################################################################################################################                                     | 120/157 [Time: 00:00]

Ingesting Batches:
|#######################################################################################################################################                      | 135/157 [Time: 00:00]

Ingesting Batches:
|######################################################################################################################################################       | 150/157 [Time: 00:01]

Ingesting Batches:
|#############################################################################################################################################################| 157/157 [Time: 00:01]


Computing Check:
|     | 0/1 [Time: 00:00]


Computing Check:
|#####| 1/1 [Time: 00:00]
Single Dataset Performance


Define a Condition#

We can define a condition to validate that our model performance score is above or below a certain threshold. The condition is defined as a function that takes the results of the check as input and returns a ConditionResult object.

check = SingleDatasetPerformance()
check.add_condition_greater_than(0.5)
result = check.run(train_ds, mnist_model)
result.show(show_additional_outputs=False)
Validating Input:
|     | 0/1 [Time: 00:00]
Validating Input:
|#####| 1/1 [Time: 00:00]

Ingesting Batches:
|                                                                                                                                                             | 0/157 [Time: 00:00]

Ingesting Batches:
|################                                                                                                                                             | 16/157 [Time: 00:00]

Ingesting Batches:
|################################                                                                                                                             | 32/157 [Time: 00:00]

Ingesting Batches:
|################################################                                                                                                             | 48/157 [Time: 00:00]

Ingesting Batches:
|################################################################                                                                                             | 64/157 [Time: 00:00]

Ingesting Batches:
|################################################################################                                                                             | 80/157 [Time: 00:00]

Ingesting Batches:
|################################################################################################                                                             | 96/157 [Time: 00:00]

Ingesting Batches:
|###############################################################################################################9                                             | 112/157 [Time: 00:00]

Ingesting Batches:
|################################################################################################################################                             | 128/157 [Time: 00:00]

Ingesting Batches:
|################################################################################################################################################             | 144/157 [Time: 00:00]

Ingesting Batches:
|#############################################################################################################################################################| 157/157 [Time: 00:01]


Computing Check:
|     | 0/1 [Time: 00:00]


Computing Check:
|#####| 1/1 [Time: 00:00]
Single Dataset Performance


We can also define a condition on a specific metric (or a subset of the metrics) that was passed to the check and a specific class, instead of testing all the metrics and all the classes which is the default mode.

check = SingleDatasetPerformance()
check.add_condition_greater_than(0.8, metrics=['Precision'], class_mode='3')
result = check.run(train_ds, mnist_model)
result.show(show_additional_outputs=False)
Validating Input:
|     | 0/1 [Time: 00:00]
Validating Input:
|#####| 1/1 [Time: 00:00]

Ingesting Batches:
|                                                                                                                                                             | 0/157 [Time: 00:00]

Ingesting Batches:
|################                                                                                                                                             | 16/157 [Time: 00:00]

Ingesting Batches:
|################################                                                                                                                             | 32/157 [Time: 00:00]

Ingesting Batches:
|################################################                                                                                                             | 48/157 [Time: 00:00]

Ingesting Batches:
|################################################################                                                                                             | 64/157 [Time: 00:00]

Ingesting Batches:
|################################################################################                                                                             | 80/157 [Time: 00:00]

Ingesting Batches:
|################################################################################################                                                             | 96/157 [Time: 00:00]

Ingesting Batches:
|###############################################################################################################9                                             | 112/157 [Time: 00:00]

Ingesting Batches:
|################################################################################################################################                             | 128/157 [Time: 00:00]

Ingesting Batches:
|################################################################################################################################################             | 144/157 [Time: 00:00]

Ingesting Batches:
|#############################################################################################################################################################| 157/157 [Time: 00:01]


Computing Check:
|     | 0/1 [Time: 00:00]


Computing Check:
|#####| 1/1 [Time: 00:00]
Single Dataset Performance


Total running time of the script: ( 0 minutes 4.416 seconds)

Gallery generated by Sphinx-Gallery