mindspore.ops.clip_by_value

mindspore.ops.clip_by_value(x, clip_value_min=None, clip_value_max=None)[源代码]

将输入Tensor值裁剪到指定的最小值和最大值之间。

限制 \(x\) 的范围,其 \(x\) 的最小值为 clip_value_min ,最大值为 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 必须小于或等于 clip_value_max

  • \(x\)clip_value_minclip_value_max 的数据类型需支持隐式类型转换,且不能同时为布尔型。

参数:

  • x (Tensor) - clip_by_value 的输入,任意维度的Tensor。

  • clip_value_min (Tensor) - 指定最小值。

  • clip_value_max (Tensor) - 指定最大值。

返回:

Tensor,表示裁剪后的Tensor。其shape和数据类型和 x 相同。

支持平台:

Ascend GPU CPU

样例:

>>> 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.]]