mindspore.ops.clip_by_value

mindspore.ops.clip_by_value(x, clip_value_min=None, clip_value_max=None)[source]

Clips tensor values to a specified min and max.

Limits the value of \(x\) to a range, whose lower limit is clip_value_min and upper limit is clip_value_max .

\[\begin{split}out_i= \left\{ \begin{array}{align} clip\_value\_max & \text{ if } x_i\ge clip\_value\_max \\ x_i & \text{ if } clip\_value\_min \lt x_i \lt clip\_value\_max \\ clip\_value\_min & \text{ if } x_i \le clip\_value\_min \\ \end{array}\right.\end{split}\]

Note

  • clip_value_min and clip_value_max cannot be None at the same time;

  • When clip_value_min is None and clip_value_max is not None, the elements in Tensor larger than clip_value_max will become clip_value_max;

  • When clip_value_min is not None and clip_value_max is None, the elements in Tensor smaller than clip_value_min will become clip_value_min;

  • If clip_value_min is greater than clip_value_max, the value of all elements in Tensor will be set to clip_value_max;

  • The data type of x, clip_value_min and clip_value_max should support implicit type conversion and cannot be bool type.

Parameters
  • x (Union(Tensor, list[Tensor], tuple[Tensor])) – Input data, which type is Tensor or a list or tuple of Tensor. Tensors of arbitrary dimensions are supported.

  • clip_value_min (Union(Tensor, float, int)) – The minimum value. Default: None.

  • clip_value_max (Union(Tensor, float, int)) – The maximum value. Default: None.

Returns

(Union(Tensor, tuple[Tensor], list[Tensor])), a clipped Tensor or a tuple or a list of clipped Tensor. The data type and shape are the same as x.

Raises
  • ValueError – If both clip_value_min and clip_value_max are None.

  • TypeError – If the type of x is not in Tensor or list[Tensor] or tuple[Tensor].

  • TypeError – If the type of clip_value_min is not in None, Tensor, float or int.

  • TypeError – If the type of clip_value_max is not in None, Tensor, float or int.

Supported Platforms:

Ascend GPU CPU

Examples

>>> # case 1: the data type of x is Tensor
>>> import mindspore
>>> from mindspore import Tensor, ops
>>> import numpy as np
>>> min_value = Tensor(5, mindspore.float32)
>>> max_value = Tensor(20, mindspore.float32)
>>> x = Tensor(np.array([[1., 25., 5., 7.], [4., 11., 6., 21.]]), mindspore.float32)
>>> output = ops.clip_by_value(x, min_value, max_value)
>>> print(output)
[[ 5. 20.  5.  7.]
 [ 5. 11.  6. 20.]]
>>> # case 2: the data type of x is list[Tensor]
>>> min_value = 5
>>> max_value = 20
>>> x = Tensor(np.array([[1., 25., 5., 7.], [4., 11., 6., 21.]]), mindspore.float32)
>>> y = Tensor(np.array([[1., 25., 5., 7.], [4., 11., 6., 21.]]), mindspore.float32)
>>> output = ops.clip_by_value([x,y], min_value, max_value)
>>> for out in output:
...     print(out)
[[ 5. 20.  5.  7.]
 [ 5. 11.  6. 20.]]
[[ 5. 20.  5.  7.]
 [ 5. 11.  6. 20.]]