clip_by_norm

paddle.fluid.layers.nn. clip_by_norm ( x, max_norm, name=None ) [source]

ClipByNorm Operator.

This operator limits the L2 norm of the input $X$ within $max_norm$. If the L2 norm of $X$ is less than or equal to $max_norm$, $Out$ will be the same as $X$. If the L2 norm of $X$ is greater than $max_norm$, $X$ will be linearly scaled to make the L2 norm of $Out$ equal to $max_norm$, as shown in the following formula:

$$ Out = \frac{max\_norm * X}{norm(X)}, $$

where $norm(X)$ represents the L2 norm of $X$.

Parameters
  • x (Variable) – (Tensor) The input of clip_by_norm op and data type is float32.The number of dimensions must be between [1, 9]

  • max_norm (FLOAT) – (float) The maximum norm value

  • name (str, optional) – For detailed information, please refer to Name. Usually name is no need to set and None by default.

Returns

out(Variable): (Tensor) The output of clip_by_norm op with shape as input(X)The data type is float32

Return type

Tensor

Examples

import paddle
import paddle.fluid as fluid

input = paddle.to_tensor([[2.0, 2.0], [2.0, 2.0]], dtype='float32')
reward = fluid.layers.clip_by_norm(x=input, max_norm=1.0)
# [[0.5, 0.5], [0.5, 0.5]]