Main Content


Train robust networks and verify network robustness

Deep learning verification is a set of techniques for assessing the properties of deep neural networks. For example, you can verify the robustness properties of a network, compute network output bounds, find adversarial examples, and detect out-of-distribution data.

The Deep Learning Toolbox™ Verification Library support package enables testing robustness properties of deep learning networks.

  • Use the verifyNetworkRobustness function to verify network robustness to adversarial examples. A network is robust to adversarial inputs if the predicted class of the network does not change when the input is perturbed between specified lower and upper input bounds. For a set of input bounds, the function checks if the network is robust to adversarial examples between those input bounds and returns either verified, violated, or unproven.

  • Use the estimateNetworkOutputBounds function to estimate the range of output values that the network returns when the input is between specified lower and upper bounds. Use this function to estimate how sensitive the network predictions are to input perturbation.

  • Use the networkDistributionDiscriminator function to create a distribution discriminator that separates data into in- and out-of-distribution.


estimateNetworkOutputBounds Estimate output bounds of deep learning network
verifyNetworkRobustnessVerify adversarial robustness of deep learning network
networkDistributionDiscriminator Deep learning distribution discriminator
isInNetworkDistributionDetermine whether data is within the distribution of the network
distributionScoresDistribution confidence scores


BaselineDistributionDiscriminatorBaseline distribution discriminator
EnergyDistributionDiscriminatorEnergy distribution discriminator
ODINDistributionDiscriminatorODIN distribution discriminator
HBOSDistributionDiscriminatorHBOS distribution discriminator