Skip to main content

dnnv - deep neural network verification

Project description

Deep Neural Network Verification

A framework for verification and analysis of deep neural networks.

Getting Started

For more detailed instructions, see our documentation.

Installation

Clone this network:

$ git clone https://github.com/dlshriver/DNNV.git

Create a python virtual environment for this project:

$ ./manage.sh init

To activate the virtual environment and set environment variables correctly for tools installed using the provided manage.sh script, run:

$ . .env.d/openenv.sh

Install any of the supported verifiers (Reluplex, planet, MIPVerify.jl, Neurify, ERAN, PLNN, marabou, nnenum, verinet):

$ ./manage.sh install reluplex planet mipverify neurify eran plnn marabou nnenum verinet

Make sure that the project environment is activated when installing verifiers with the manage.sh script. Otherwise some tools may not install correctly.

Additionally, several verifiers make use of the Gurobi solver. This should be installed automatically, but requires a license to be manually activated and available on the host machine. Academic licenses can be obtained for free from the Gurobi website.

Finally, planet has several additional requirements that currently must be installed separately before installation with ./manage.sh: libglpk-dev, qt5-qmake, valgrind, libltdl-dev, protobuf-compiler.

Usage

Properties are specified in our property DSL, extended from Python. A property specification can import python modules, and define variables. The only required component is the property expression, which must appear at the end of the file. An example of a local robustness property is shown below.

from dnnv.properties import *

N = Network("N")
x = Image("path/to/image")
epsilon = Parameter("epsilon", float, default=1.0)

Forall(
    x_,
    Implies(
        ((x - epsilon) < x_ < (x + epsilon)),
        argmax(N(x_)) == argmax(N(x))),
    ),
)

To check whether property holds for some network using the ERAN verifier, run:

$ python -m dnnv property.prop --network N network.onnx --eran

Additionally, if the property defines parameters, using the Parameter keyword, they can be specified on the command line using the option --prop.PARAMETER_NAME, where PARAMETER_NAME is the name of the parameter. For the property defined above, a value for epsilon can be provided with a command line option as follows:

$ python -m dnnv property.prop --network network.onnx --eran --prop.epsilon=2.0

A set of example networks and properties that can be run with DNNV are available here.

Acknowledgements

This material is based in part upon work supported by the National Science Foundation under grant number 1900676 and 2019239.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dnnv-0.4.3.tar.gz (10.0 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dnnv-0.4.3-py3-none-any.whl (99.2 kB view details)

Uploaded Python 3

File details

Details for the file dnnv-0.4.3.tar.gz.

File metadata

  • Download URL: dnnv-0.4.3.tar.gz
  • Upload date:
  • Size: 10.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.23.0

File hashes

Hashes for dnnv-0.4.3.tar.gz
Algorithm Hash digest
SHA256 4239acd8de5a392474a7bf3f5021c00ac6624fb895215ea1112a3f23e942380d
MD5 4ac76a4592a18a5cccea163e9c236eff
BLAKE2b-256 fc16d098b573ff170df07a3e4962c4afe7d545525171c4ad4e40f998e2f37425

See more details on using hashes here.

File details

Details for the file dnnv-0.4.3-py3-none-any.whl.

File metadata

  • Download URL: dnnv-0.4.3-py3-none-any.whl
  • Upload date:
  • Size: 99.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.23.0

File hashes

Hashes for dnnv-0.4.3-py3-none-any.whl
Algorithm Hash digest
SHA256 ccc566f99a88ad82c612b8e7e92c74b8d8319e13db2e20bff7140dba959065d9
MD5 b1d004a21ac9640caf5bc8bc197eab22
BLAKE2b-256 9cf33a777c747731f325e41ce8aa7439c29f198c542d4f2f12565847ac2ea69c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page