mindspore.nn.ClipByNorm

class mindspore.nn.ClipByNorm(axis=None)[source]

Clips tensor values to a maximum L2-norm.

The output of this layer remains the same if the L2-norm of the input tensor is not greater than the argument clip_norm. Otherwise the tensor will be normalized as:

output(X)=clip_normXL2(X),

where L2(X) is the L2-norm of X.

Parameters

axis (Union[None, int, tuple(int)]) – Compute the L2-norm along the Specific dimension. Default: None, all dimensions to calculate.

Inputs:
  • x (Tensor) - Tensor of shape N-D. The type must be float32 or float16.

  • clip_norm (Tensor) - A scalar Tensor of shape () or (1). Or a tensor shape can be broadcast to input x shape.

Outputs:

Tensor, clipped tensor with the same shape as the x, whose type is float32.

Raises
  • TypeError – If axis is not one of None, int, tuple.

  • TypeError – If dtype of x is neither float32 nor float16.

Supported Platforms:

Ascend GPU CPU

Examples

>>> net = nn.ClipByNorm()
>>> x = Tensor(np.random.randint(0, 10, [4, 16]), mindspore.float32)
>>> clip_norm = Tensor(np.array([100]).astype(np.float32))
>>> output = net(x, clip_norm)
>>> print(output.shape)
(4, 16)