# tf.contrib.constrained_optimization.ConstrainedOptimizer

<br />

|---|
| [![](https://www.tensorflow.org/images/GitHub-Mark-32px.png) View source on GitHub](https://github.com/tensorflow/tensorflow/blob/v1.15.0/tensorflow/contrib/constrained_optimization/python/constrained_optimizer.py#L32-L279) |

Base class representing a constrained optimizer.

    tf.contrib.constrained_optimization.ConstrainedOptimizer(
        optimizer
    )

A ConstrainedOptimizer wraps a tf.compat.v1.train.Optimizer (or more than
one), and applies it to a ConstrainedMinimizationProblem. Unlike a
tf.compat.v1.train.Optimizer, which takes a tensor to minimize as a parameter
to its minimize() method, a constrained optimizer instead takes a
ConstrainedMinimizationProblem.

<br />

<br />

<br />

| ## Args ||
|---|---|
| `optimizer` | tf.compat.v1.train.Optimizer, used to optimize the ConstraintedMinimizationProblem. |

<br />

<br />

<br />

<br />

| ## Attributes ||
|---|---|
| `optimizer` | Returns the [`tf.compat.v1.train.Optimizer`](https://www.tensorflow.org/versions/r1.15/api_docs/python/tf/train/Optimizer) used for optimization. |

<br />

## Methods

### `minimize`

[View source](https://github.com/tensorflow/tensorflow/blob/v1.15.0/tensorflow/contrib/constrained_optimization/python/constrained_optimizer.py#L201-L279)

    minimize(
        minimization_problem, unconstrained_steps=None, global_step=None, var_list=None,
        gate_gradients=train_optimizer.Optimizer.GATE_OP, aggregation_method=None,
        colocate_gradients_with_ops=False, name=None, grad_loss=None
    )

Returns an `Operation` for minimizing the constrained problem.

This method combines the functionality of `minimize_unconstrained` and
`minimize_constrained`. If global_step \< unconstrained_steps, it will
perform an unconstrained update, and if global_step \>= unconstrained_steps,
it will perform a constrained update.

The reason for this functionality is that it may be best to initialize the
constrained optimizer with an approximate optimum of the unconstrained
problem.

<br />

<br />

<br />

| Args ||
|---|---|
| `minimization_problem` | ConstrainedMinimizationProblem, the problem to optimize. |
| `unconstrained_steps` | int, number of steps for which we should perform unconstrained updates, before transitioning to constrained updates. |
| `global_step` | as in [`tf.compat.v1.train.Optimizer`](https://www.tensorflow.org/versions/r1.15/api_docs/python/tf/train/Optimizer)'s `minimize` method. |
| `var_list` | as in [`tf.compat.v1.train.Optimizer`](https://www.tensorflow.org/versions/r1.15/api_docs/python/tf/train/Optimizer)'s `minimize` method. |
| `gate_gradients` | as in [`tf.compat.v1.train.Optimizer`](https://www.tensorflow.org/versions/r1.15/api_docs/python/tf/train/Optimizer)'s `minimize` method. |
| `aggregation_method` | as in [`tf.compat.v1.train.Optimizer`](https://www.tensorflow.org/versions/r1.15/api_docs/python/tf/train/Optimizer)'s `minimize` method. |
| `colocate_gradients_with_ops` | as in [`tf.compat.v1.train.Optimizer`](https://www.tensorflow.org/versions/r1.15/api_docs/python/tf/train/Optimizer)'s `minimize` method. |
| `name` | as in [`tf.compat.v1.train.Optimizer`](https://www.tensorflow.org/versions/r1.15/api_docs/python/tf/train/Optimizer)'s `minimize` method. |
| `grad_loss` | as in [`tf.compat.v1.train.Optimizer`](https://www.tensorflow.org/versions/r1.15/api_docs/python/tf/train/Optimizer)'s `minimize` method. |

<br />

<br />

<br />

<br />

| Returns ||
|---|---|
| `Operation`, the train_op. ||

<br />

<br />

<br />

<br />

| Raises ||
|---|---|
| `ValueError` | If unconstrained_steps is provided, but global_step is not. |

<br />

### `minimize_constrained`

[View source](https://github.com/tensorflow/tensorflow/blob/v1.15.0/tensorflow/contrib/constrained_optimization/python/constrained_optimizer.py#L93-L145)

    minimize_constrained(
        minimization_problem, global_step=None, var_list=None,
        gate_gradients=train_optimizer.Optimizer.GATE_OP, aggregation_method=None,
        colocate_gradients_with_ops=False, name=None, grad_loss=None
    )

Returns an `Operation` for minimizing the constrained problem.

Unlike `minimize_unconstrained`, this function attempts to find a solution
that minimizes the `objective` portion of the minimization problem while
satisfying the `constraints` portion.

<br />

<br />

<br />

| Args ||
|---|---|
| `minimization_problem` | ConstrainedMinimizationProblem, the problem to optimize. |
| `global_step` | as in [`tf.compat.v1.train.Optimizer`](https://www.tensorflow.org/versions/r1.15/api_docs/python/tf/train/Optimizer)'s `minimize` method. |
| `var_list` | as in [`tf.compat.v1.train.Optimizer`](https://www.tensorflow.org/versions/r1.15/api_docs/python/tf/train/Optimizer)'s `minimize` method. |
| `gate_gradients` | as in [`tf.compat.v1.train.Optimizer`](https://www.tensorflow.org/versions/r1.15/api_docs/python/tf/train/Optimizer)'s `minimize` method. |
| `aggregation_method` | as in [`tf.compat.v1.train.Optimizer`](https://www.tensorflow.org/versions/r1.15/api_docs/python/tf/train/Optimizer)'s `minimize` method. |
| `colocate_gradients_with_ops` | as in [`tf.compat.v1.train.Optimizer`](https://www.tensorflow.org/versions/r1.15/api_docs/python/tf/train/Optimizer)'s `minimize` method. |
| `name` | as in [`tf.compat.v1.train.Optimizer`](https://www.tensorflow.org/versions/r1.15/api_docs/python/tf/train/Optimizer)'s `minimize` method. |
| `grad_loss` | as in [`tf.compat.v1.train.Optimizer`](https://www.tensorflow.org/versions/r1.15/api_docs/python/tf/train/Optimizer)'s `minimize` method. |

<br />

<br />

<br />

<br />

| Returns ||
|---|---|
| `Operation`, the train_op. ||

<br />

### `minimize_unconstrained`

[View source](https://github.com/tensorflow/tensorflow/blob/v1.15.0/tensorflow/contrib/constrained_optimization/python/constrained_optimizer.py#L147-L199)

    minimize_unconstrained(
        minimization_problem, global_step=None, var_list=None,
        gate_gradients=train_optimizer.Optimizer.GATE_OP, aggregation_method=None,
        colocate_gradients_with_ops=False, name=None, grad_loss=None
    )

Returns an `Operation` for minimizing the unconstrained problem.

Unlike `minimize_constrained`, this function ignores the `constraints` (and
`proxy_constraints`) portion of the minimization problem entirely, and only
minimizes `objective`.

<br />

<br />

<br />

| Args ||
|---|---|
| `minimization_problem` | ConstrainedMinimizationProblem, the problem to optimize. |
| `global_step` | as in [`tf.compat.v1.train.Optimizer`](https://www.tensorflow.org/versions/r1.15/api_docs/python/tf/train/Optimizer)'s `minimize` method. |
| `var_list` | as in [`tf.compat.v1.train.Optimizer`](https://www.tensorflow.org/versions/r1.15/api_docs/python/tf/train/Optimizer)'s `minimize` method. |
| `gate_gradients` | as in [`tf.compat.v1.train.Optimizer`](https://www.tensorflow.org/versions/r1.15/api_docs/python/tf/train/Optimizer)'s `minimize` method. |
| `aggregation_method` | as in [`tf.compat.v1.train.Optimizer`](https://www.tensorflow.org/versions/r1.15/api_docs/python/tf/train/Optimizer)'s `minimize` method. |
| `colocate_gradients_with_ops` | as in [`tf.compat.v1.train.Optimizer`](https://www.tensorflow.org/versions/r1.15/api_docs/python/tf/train/Optimizer)'s `minimize` method. |
| `name` | as in [`tf.compat.v1.train.Optimizer`](https://www.tensorflow.org/versions/r1.15/api_docs/python/tf/train/Optimizer)'s `minimize` method. |
| `grad_loss` | as in [`tf.compat.v1.train.Optimizer`](https://www.tensorflow.org/versions/r1.15/api_docs/python/tf/train/Optimizer)'s `minimize` method. |

<br />

<br />

<br />

<br />

| Returns ||
|---|---|
| `Operation`, the train_op. ||

<br />