Calculators

Calculators are responsible for calculating a specific coverage criteria for the model under test.

InSynth provides a set of concrete calculator implementations which are all based on the abstract Calculator class.

InSynth Calculators

Each calculator has to be instantiated for a specific model. Then, the update_coverage method can be called which updates the internal coverage dictionaries in the calculator. After that is done for all elements in the dataset, the get_coverage method can be called to retrieve the coverage.

The calculators expect a python generator as input which allows processing datasets which do not fit into memory. A generator is a function which returns a new dataset element on each call. It can be created as follows:

lambda: (data for data in dataset)

NeuronCoverageCalculator

The NeuronCoverageCalculator determines the neuron coverage of the model.

Usage

from insynth.calculators import NeuronCoverageCalculator

calculator = NeuronCoverageCalculator(model_to_test)
calculator.update_coverage(test_case)
print(calculator.get_coverage())

StrongNeuronActivationCoverageCalculator

The StrongNeuronActivationCoverageCalculator determines the strong neuron activation coverage of the model.

Usage

from insynth.calculators import StrongNeuronActivationCoverageCalculator

calculator = StrongNeuronActivationCoverageCalculator(model_to_test)
calculator.update_neuron_bounds(training_dataset)
calculator.update_coverage(test_case)
print(calculator.get_coverage())

KMultiSectionNeuronCoverageCalculator

The KMultiSectionNeuronCoverageCalculator determines the k-multi-section neuron coverage of the model.

Usage

from insynth.calculators import KMultiSectionNeuronCoverageCalculator

calculator = KMultiSectionNeuronCoverageCalculator(model_to_test)
calculator.update_neuron_bounds(training_dataset)
calculator.update_coverage(test_case)
print(calculator.get_coverage())

NeuronBoundaryCoverageCalculator

The NeuronBoundaryCoverageCalculator determines the neuron boundary coverage of the model.

Usage

from insynth.calculators import NeuronBoundaryCoverageCalculator

calculator = NeuronBoundaryCoverageCalculator(model_to_test)
calculator.update_neuron_bounds(training_dataset)
calculator.update_coverage(test_case)
print(calculator.get_coverage())

TopKNeuronCoverageCalculator

The TopKNeuronCoverageCalculator determines the top-k neuron coverage of the model.

Usage

from insynth.calculators import TopKNeuronCoverageCalculator

calculator = TopKNeuronCoverageCalculator(model_to_test)
calculator.update_coverage(test_case)
print(calculator.get_coverage())

TopKNeuronPatternsCalculator

The TopKNeuronPatternsCalculator determines the top-k neuron patterns of the model.

Usage

from insynth.calculators import TopKNeuronPatternsCalculator

calculator = TopKNeuronPatternsCalculator(model_to_test)
calculator.update_coverage(test_case)
print(calculator.get_coverage())