Note
Click here to download the full example code
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.
check = SingleDatasetPerformance()
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:
|######### | 9/157 [Time: 00:00]
Ingesting Batches:
|################### | 19/157 [Time: 00:00]
Ingesting Batches:
|############################9 | 29/157 [Time: 00:00]
Ingesting Batches:
|####################################### | 39/157 [Time: 00:00]
Ingesting Batches:
|################################################# | 49/157 [Time: 00:00]
Ingesting Batches:
|########################################################### | 59/157 [Time: 00:00]
Ingesting Batches:
|##################################################################### | 69/157 [Time: 00:00]
Ingesting Batches:
|############################################################################### | 79/157 [Time: 00:00]
Ingesting Batches:
|######################################################################################### | 89/157 [Time: 00:00]
Ingesting Batches:
|################################################################################################### | 99/157 [Time: 00:01]
Ingesting Batches:
|############################################################################################################# | 109/157 [Time: 00:01]
Ingesting Batches:
|####################################################################################################################### | 119/157 [Time: 00:01]
Ingesting Batches:
|################################################################################################################################# | 129/157 [Time: 00:01]
Ingesting Batches:
|############################################################################################################################################ | 140/157 [Time: 00:01]
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]
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:
|########## | 10/157 [Time: 00:00]
Ingesting Batches:
|#################### | 20/157 [Time: 00:00]
Ingesting Batches:
|############################## | 30/157 [Time: 00:00]
Ingesting Batches:
|######################################## | 40/157 [Time: 00:00]
Ingesting Batches:
|################################################## | 50/157 [Time: 00:00]
Ingesting Batches:
|############################################################ | 60/157 [Time: 00:00]
Ingesting Batches:
|###################################################################### | 70/157 [Time: 00:00]
Ingesting Batches:
|################################################################################ | 80/157 [Time: 00:00]
Ingesting Batches:
|########################################################################################## | 90/157 [Time: 00:00]
Ingesting Batches:
|#################################################################################################### | 100/157 [Time: 00:01]
Ingesting Batches:
|############################################################################################################## | 110/157 [Time: 00:01]
Ingesting Batches:
|######################################################################################################################## | 120/157 [Time: 00:01]
Ingesting Batches:
|################################################################################################################################## | 130/157 [Time: 00:01]
Ingesting Batches:
|############################################################################################################################################ | 140/157 [Time: 00:01]
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]
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:
|########## | 10/157 [Time: 00:00]
Ingesting Batches:
|##################### | 21/157 [Time: 00:00]
Ingesting Batches:
|############################### | 31/157 [Time: 00:00]
Ingesting Batches:
|######################################### | 41/157 [Time: 00:00]
Ingesting Batches:
|################################################### | 51/157 [Time: 00:00]
Ingesting Batches:
|############################################################# | 61/157 [Time: 00:00]
Ingesting Batches:
|####################################################################### | 71/157 [Time: 00:00]
Ingesting Batches:
|################################################################################# | 81/157 [Time: 00:00]
Ingesting Batches:
|########################################################################################### | 91/157 [Time: 00:00]
Ingesting Batches:
|##################################################################################################### | 101/157 [Time: 00:01]
Ingesting Batches:
|##############################################################################################################9 | 111/157 [Time: 00:01]
Ingesting Batches:
|######################################################################################################################### | 121/157 [Time: 00:01]
Ingesting Batches:
|################################################################################################################################### | 131/157 [Time: 00:01]
Ingesting Batches:
|############################################################################################################################################# | 141/157 [Time: 00:01]
Ingesting Batches:
|####################################################################################################################################################### | 151/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]
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:
|########## | 10/157 [Time: 00:00]
Ingesting Batches:
|#################### | 20/157 [Time: 00:00]
Ingesting Batches:
|############################## | 30/157 [Time: 00:00]
Ingesting Batches:
|######################################## | 40/157 [Time: 00:00]
Ingesting Batches:
|################################################## | 50/157 [Time: 00:00]
Ingesting Batches:
|############################################################ | 60/157 [Time: 00:00]
Ingesting Batches:
|###################################################################### | 70/157 [Time: 00:00]
Ingesting Batches:
|################################################################################ | 80/157 [Time: 00:00]
Ingesting Batches:
|########################################################################################## | 90/157 [Time: 00:00]
Ingesting Batches:
|#################################################################################################### | 100/157 [Time: 00:01]
Ingesting Batches:
|##############################################################################################################9 | 111/157 [Time: 00:01]
Ingesting Batches:
|######################################################################################################################### | 121/157 [Time: 00:01]
Ingesting Batches:
|################################################################################################################################### | 131/157 [Time: 00:01]
Ingesting Batches:
|############################################################################################################################################# | 141/157 [Time: 00:01]
Ingesting Batches:
|######################################################################################################################################################## | 152/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]
Total running time of the script: ( 0 minutes 6.770 seconds)