Neural Network Formulations

Base Formulation

class omlt.formulation._PyomoFormulation[source]

Bases: _PyomoFormulationInterface

This is a base class for different Pyomo formulations. To create a new formulation, inherit from this class and implement the abstract methods and properties.

property block

The underlying block containing the constraints / variables for this formulation.

abstract property input_indexes

Return the indices corresponding to the inputs of the ML model. This is a list of entries (which may be tuples for higher dimensional inputs).

abstract property output_indexes

Return the indices corresponding to the outputs of the ML model. This is a list of entries (which may be tuples for higher dimensional outputs).

Provided Formulations

class omlt.neuralnet.nn_formulation.FullSpaceNNFormulation(network_structure, layer_constraints=None, activation_constraints=None)[source]

Bases: _PyomoFormulation

This class is the entry-point to build neural network formulations.

This class iterates over all nodes in the neural network and for each one them, generates the constraints to represent the layer and its activation function.

Parameters:
  • network_structure (NetworkDefinition) – the neural network definition

  • layer_constraints (dict-like or None) – overrides the constraints generated for the specified layer types

  • activation_constraints (dict-like or None) – overrides the constraints generated for the specified activation functions

property block

The underlying block containing the constraints / variables for this formulation.

property input_indexes

The indexes of the formulation inputs.

property output_indexes

The indexes of the formulation output.

class omlt.neuralnet.nn_formulation.ReducedSpaceNNFormulation(network_structure, activation_functions=None)[source]

Bases: _PyomoFormulation

This class is used to build reduced-space formulations of neural networks.

Parameters:
  • network_structure (NetworkDefinition) – the neural network definition

  • activation_functions (dict-like or None) – overrides the actual functions used for particular activations

property block

The underlying block containing the constraints / variables for this formulation.

property input_indexes

The indexes of the formulation inputs.

property output_indexes

The indexes of the formulation output.

class omlt.neuralnet.nn_formulation.FullSpaceSmoothNNFormulation(network_structure)[source]

Bases: FullSpaceNNFormulation

property block

The underlying block containing the constraints / variables for this formulation.

property input_indexes

The indexes of the formulation inputs.

property output_indexes

The indexes of the formulation output.

class omlt.neuralnet.nn_formulation.ReducedSpaceSmoothNNFormulation(network_structure)[source]

Bases: ReducedSpaceNNFormulation

This class is used to build reduced-space formulations of neural networks with smooth activation functions.

Parameters:

network_structure (NetworkDefinition) – the neural network definition

property block

The underlying block containing the constraints / variables for this formulation.

property input_indexes

The indexes of the formulation inputs.

property output_indexes

The indexes of the formulation output.

class omlt.neuralnet.nn_formulation.ReluBigMFormulation(network_structure)[source]

Bases: FullSpaceNNFormulation

property block

The underlying block containing the constraints / variables for this formulation.

property input_indexes

The indexes of the formulation inputs.

property output_indexes

The indexes of the formulation output.

class omlt.neuralnet.nn_formulation.ReluComplementarityFormulation(network_structure)[source]

Bases: FullSpaceNNFormulation

property block

The underlying block containing the constraints / variables for this formulation.

property input_indexes

The indexes of the formulation inputs.

property output_indexes

The indexes of the formulation output.

class omlt.neuralnet.nn_formulation.ReluPartitionFormulation(network_structure, split_func=None)[source]

Bases: _PyomoFormulation

This class is used to build partition-based formulations of neural networks.

Parameters:
  • network_structure (NetworkDefinition) – the neural network definition

  • split_func (callable) – the function used to compute the splits

property block

The underlying block containing the constraints / variables for this formulation.

property input_indexes

The indexes of the formulation inputs.

property output_indexes

The indexes of the formulation output.