OMLT Block

The omlt.block module contains the implementation of the OmltBlock class. This class is used in combination with a formulation object to construct the necessary constraints and variables to represent ML models.


import tensorflow.keras as keras
from omlt import OmltBlock
from omlt.neuralnet import FullSpaceNNFormulation
from import load_keras_sequential

nn = keras.models.load_model(keras_fname)
net = load_keras_sequential(nn)

m = pyo.ConcreteModel()
m.neural_net_block = OmltBlock()

m.obj = pyo.Objective(expr=(m.neural_net_block.outputs[2]-4.0)**2)
status = pyo.SolverFactory('ipopt').solve(m, tee=True)
class omlt.block.OmltBlock(*args, **kwds)

Bases: CustomBlock


OmltBlock is the name used to declare the custom Pyomo block which is exposed to the user. The block functionality is given by OmltBlockData which inherits from Pyomo _BlockData.

class omlt.block.OmltBlockData(component)[source]

Bases: _BlockData

_setup_inputs_outputs(*, input_indexes, output_indexes)[source]

This function should be called by the derived class to create the inputs and outputs on the block

  • input_indexes – list list of indexes (can be tuples) defining the set to be used for the input variables

  • output_indexes – list list of indexes (can be tuples) defining the set to be used for the input variables


Call this method to construct the constraints (and possibly intermediate variables) necessary for the particular neural network formulation. The formulation object can be accessed later through the “formulation” attribute.


formulation (instance of _PyomoFormulation) – see, for example, FullSpaceNNFormulation