Releases: dlshriver/dnnv
v0.6.0
This release brings several new features, some bug fixes, and performance improvements. It also includes commits from 2 new contributors.
Features:
- support for the ONNX operators Slice (#90) and Split (#81)
- support for more functions in property specifications (
len
,min
,max
,sum
,numpy.min
,numpy.max
,numpy.sum
,numpy.mean
,numpy.shape
) (#85) - add support for optional simplifiers (#87)
- add ReluifyMaxPool to transform MaxPool operations into a sequence of Conv and Relu operations
- optional verifiers can currently be specified using an environment variable,
DNNV_OPTIONAL_SIMPLIFIERS
, set to a colon separated list of optional simplifications to apply, e.g.,DNNV_OPTIONAL_SIMPLIFIERS=ReluifyMaxPool
- add support for other optimizer backends to MIPVerify, which can be specified with
--mipverify.optimizer=SOLVER
(#88)
Performance improvements:
- cache hashes of complex expressions (#78)
- testing performance improvements: better caching, split into separate jobs for unit and system for faster failures (#89)
- optimizations for expression shape and type inference and expression concretization (#96)
Bug fixes:
- fix non-monotonic bounds updates (#79)
- fix subprocess command for finding library dependencies (#82)
- use a more robust url for downloading zlib releases (#82)
- fixed use of network composition in property specifications (#83)
- fixes for Dropout operator (#90)
- add a check for network-free properties (#95)
Contributors in this release:
- David Shriver (dlshriver)
- Meriel Stein (MissMeriel)
- Felipe Toledo (Felipetoledo4815)
- Samuel Teuber (samysweb)
v0.5.1
v0.5.0
Changes:
- Updated verifiers and use the latest version of Gurobi (now with Docker support!)
- A significantly improved test suite
- Support for verifier installation after installing DNNV with pip
- DNNP finally provides access to the path of the specification being verified by using the path variable
- Replace simpleparse dependency with dependency on lark and refactor property parsers
- Updated and improved documentation (https://docs.dnnv.org)
- Added an expression visitor for inferring types and shapes of DNNP expressions
- Fixed a bug where logical negations of vector comparisons were not expanded into disjunctions of comparisons
New workflows:
For users that do not need to modify the DNNV source code, the new preferred workflow is to create and/or activate a python (python 3.7 and 3.8 are supported) virtual environment (e.g., python -m venv .venv
and source .venv/bin/activate
) and install DNNV with pip install dnnv
(to install pre-releases use the --pre
option for pip: pip install --pre dnnv
). After that, verifiers can be managed using the included dnnv_manage
command. For example, the nnenum verifier can be installed with dnnv_manage install nnenum
.
For those who do need access to the DNNV source, the workflow has been simplified and no longer requires the extra environment management scripts. Simply download the source (and checkout the develop branch), set up your python virtual environment, and then run pip install .
. Verifiers can then be installed using dnnv_manage
.
v0.5.0a2
Changes:
- Updated verifiers and use the latest version of Gurobi (now with Docker support!)
- A significantly improved test suite
- Support for verifier installation after installing DNNV with pip
- DNNP finally provides access to the path of the specification being verified by using the path variable
- Replace simpleparse dependency with dependency on lark and refactor property parsers
New workflows:
For users that do not need to modify the DNNV source code, the new preferred workflow is to create and/or activate a python (python 3.7 and 3.8 are supported) virtual environment (e.g., python -m venv .venv
and source .venv/bin/activate
) and install DNNV with pip install dnnv
(to install pre-releases use the --pre
option for pip: pip install --pre dnnv
). After that, verifiers can be managed using the included dnnv_manage
command. For example, the nnenum verifier can be installed with dnnv_manage install nnenum
.
For those who do need access to the DNNV source, the workflow has been simplified and no longer requires the extra environment management scripts. Simply download the source (and checkout the develop branch), set up your python virtual environment, and then run pip install .
. Verifiers can then be installed using dnnv_manage
.
v0.4.8
v0.4.6
v0.4.5
v0.4.4
v0.4.0
v0.3.0
Major changes:
- add a parser for vnnlib property format
- updates property extractor to support more properties for verification
- support Elu activation
- bug fix to support flat input tensors
Minor changes:
- update verifier installation scripts
- bug fix for property parsing in python3.8
- skip tests for verifier if not installed