Class ConstrainedMinimizationProblem
Defined in tensorflow/contrib/constrained_optimization/python/constrained_minimization_problem.py
.
Abstract class representing a ConstrainedMinimizationProblem
.
A ConstrainedMinimizationProblem consists of an objective function to minimize, and a set of constraint functions that are constrained to be nonpositive.
In addition to the constraint functions, there may (optionally) be proxy constraint functions: a ConstrainedOptimizer will attempt to penalize these proxy constraint functions so as to satisfy the (non-proxy) constraints. Proxy constraints could be used if the constraints functions are difficult or impossible to optimize (e.g. if they're piecewise constant), in which case the proxy constraints should be some approximation of the original constraints that is well-enough behaved to permit successful optimization.
Properties
constraints
Returns the vector of constraint functions.
Letting g_i be the ith element of the constraints vector, the ith constraint will be g_i <= 0.
Returns:
A tensor of constraint functions.
num_constraints
Returns the number of constraints.
Returns:
An int containing the number of constraints.
Raises:
ValueError
: If the constraints (or proxy_constraints, if present) do not have fully-known shapes, OR if proxy_constraints are present, and the shapes of constraints and proxy_constraints are fully-known, but they're different.
objective
Returns the objective function.
Returns:
A 0d tensor that should be minimized.
pre_train_ops
Returns a list of Operation
s to run before the train_op.
When a ConstrainedOptimizer
creates a train_op (in minimize
minimize_unconstrained
, or minimize_constrained
), it will include these
ops before the main training step.
Returns:
A list of Operation
s.
proxy_constraints
Returns the optional vector of proxy constraint functions.
The difference between constraints
and proxy_constraints
is that, when
proxy constraints are present, the constraints
are merely EVALUATED during
optimization, whereas the proxy_constraints
are DIFFERENTIATED. If there
are no proxy constraints, then the constraints
are both evaluated and
differentiated.
For example, if we want to impose constraints on step functions, then we
could use these functions for constraints
. However, because a step
function has zero gradient almost everywhere, we can't differentiate these
functions, so we would take proxy_constraints
to be some differentiable
approximation of constraints
.
Returns:
A tensor of proxy constraint functions.