# tf.keras.constraints.Constraint

<br />

|---|
| [![](https://www.tensorflow.org/images/GitHub-Mark-32px.png) View source on GitHub](https://github.com/keras-team/keras/tree/v2.14.0/keras/constraints.py#L33-L103) |

Base class for weight constraints.

A `Constraint` instance works like a stateless function.
Users who subclass this
class should override the `__call__` method, which takes a single
weight parameter and return a projected version of that parameter
(e.g. normalized or clipped). Constraints can be used with various Keras
layers via the `kernel_constraint` or `bias_constraint` arguments.

Here's a simple example of a non-negative weight constraint:

    class NonNegative(tf.keras.constraints.Constraint):

     def __call__(self, w):
       return w * tf.cast(tf.math.greater_equal(w, 0.), w.dtype)

    weight = tf.constant((-1.0, 1.0))
    NonNegative()(weight)
    <tf.Tensor: shape=(2,), dtype=float32, numpy=array([0.,  1.],
    dtype=float32)>

    tf.keras.layers.Dense(4, kernel_constraint=NonNegative())

## Methods

### `from_config`

[View source](https://github.com/keras-team/keras/tree/v2.14.0/keras/constraints.py#L85-L103)

    @classmethod
    from_config(
        config
    )

Instantiates a weight constraint from a configuration dictionary.

#### Example:

    constraint = UnitNorm()
    config = constraint.get_config()
    constraint = UnitNorm.from_config(config)

<br />

<br />

<br />

| Args ||
|---|---|
| `config` | A Python dictionary, the output of `get_config`. |

<br />

<br />

<br />

<br />

| Returns ||
|---|---|
| A [`tf.keras.constraints.Constraint`](https://www.tensorflow.org/versions/r2.14/api_docs/python/tf/keras/constraints/Constraint) instance. ||

<br />

### `get_config`

[View source](https://github.com/keras-team/keras/tree/v2.14.0/keras/constraints.py#L74-L83)

    get_config()

Returns a Python dict of the object config.

A constraint config is a Python dictionary (JSON-serializable) that can
be used to reinstantiate the same object.

<br />

<br />

<br />

| Returns ||
|---|---|
| Python dict containing the configuration of the constraint object. ||

<br />

### `__call__`

[View source](https://github.com/keras-team/keras/tree/v2.14.0/keras/constraints.py#L59-L72)

    __call__(
        w
    )

Applies the constraint to the input weight variable.

By default, the inputs weight variable is not modified.
Users should override this method to implement their own projection
function.

<br />

<br />

<br />

| Args ||
|---|---|
| `w` | Input weight variable. |

<br />

<br />

<br />

<br />

| Returns ||
|---|---|
| Projected variable (by default, returns unmodified inputs). ||

<br />