mindspore.nn.Hardtanh
- class mindspore.nn.Hardtanh(min_val=- 1.0, max_val=1.0)[源代码]
逐元素计算Hardtanh函数。Hardtanh函数定义为:
\[\begin{split}\text{Hardtanh}(x) = \begin{cases} 1, & \text{ if } x > 1; \\ -1, & \text{ if } x < -1; \\ x, & \text{ otherwise. } \end{cases}\end{split}\]线性区域范围 \([-1, 1]\) 可以使用 min_val 和 max_val 进行调整。
Hardtanh函数图:
说明
在Ascend硬件上,float16数据类型场景下会有偶现的精度误差较大的问题。
- 参数:
min_val (Union[int, float]) - 线性区域范围的最小值。默认值:
-1.0
。max_val (Union[int, float]) - 线性区域范围的最大值。默认值:
1.0
。
- 输入:
x (Tensor) - 数据类型为float16或float32的Tensor。在CPU和Ascend平台上支持零到七维。在GPU平台上支持零到四维。
- 输出:
Tensor,数据类型和shape与 x 的相同。
- 异常:
TypeError - x 不是Tensor。
TypeError - x 的数据类型既不是float16也不是float32。
TypeError - min_val 的数据类型既不是int也不是float。
TypeError - max_val 的数据类型既不是int也不是float。
ValueError - min_val 不小于 max_val 。
- 支持平台:
Ascend
GPU
CPU
样例:
>>> import mindspore >>> from mindspore import Tensor, nn >>> import numpy as np >>> x = Tensor(np.array([-1, -2, 0, 2, 1]), mindspore.float16) >>> hardtanh = nn.Hardtanh(min_val=-1.0, max_val=1.0) >>> output = hardtanh(x) >>> print(output) [-1. -1. 0. 1. 1.]