forked from mindspore-Ecosystem/mindspore
62 lines
2.1 KiB
ReStructuredText
62 lines
2.1 KiB
ReStructuredText
mindspore.ops.PReLU
|
||
===================
|
||
|
||
.. py:class:: mindspore.ops.PReLU(*args, **kwargs)
|
||
|
||
带参数的线性修正单元激活函数(Parametric Rectified Linear Unit activation function)。
|
||
|
||
`Delving Deep into Rectifiers:Surpassing Human-Level Performance on ImageNet Classification <https://arxiv.org/abs/1502.01852>`_ 描述了PReLU激活函数。定义如下:
|
||
|
||
.. math::
|
||
prelu(x_i)= \max(0, x_i) + \min(0, w * x_i),
|
||
|
||
其中 :math:`x_i` 是输入的一个通道的一个元素,`w` 是通道权重。
|
||
|
||
.. note::
|
||
|
||
Ascend不支持0-D或1-D的x。
|
||
|
||
**输入:**
|
||
|
||
- **x** (Tensor) - 用于计算激活函数的Tensor。数据类型为float16或float32。shape为 :math:`(N, C, *)` ,其中 :math:`*` 表示任意的附加维度数。
|
||
- **weight** (Tensor) - 权重Tensor。数据类型为float16或float32。只有两种shape是合法的,1或 `input_x` 的通道数。通道维度是输入的第二维。当输入为0-D或1-D Tensor时,通道数为1。
|
||
|
||
**输出:**
|
||
|
||
Tensor,数据类型与 `x` 的相同。
|
||
|
||
有关详细信息,请参考:class:`nn.PReLU`。
|
||
|
||
**异常:**
|
||
|
||
- **TypeError** - `x` 或 `weight` 的数据类型既不是float16也不是float32。
|
||
- **TypeError** - `x` 或 `weight` 不是Tensor。
|
||
- **ValueError** - `x` 是Ascend上的0-D或1-D Tensor。
|
||
- **ValueError** - `weight` 不是1-D Tensor。
|
||
|
||
**支持平台:**
|
||
|
||
``Ascend`` ``GPU``
|
||
|
||
**样例:**
|
||
|
||
>>> class Net(nn.Cell):
|
||
... def __init__(self):
|
||
... super(Net, self).__init__()
|
||
... self.prelu = ops.PReLU()
|
||
... def construct(self, x, weight):
|
||
... result = self.prelu(x, weight)
|
||
... return result
|
||
...
|
||
>>> x = Tensor(np.arange(-6, 6).reshape((2, 3, 2)), mindspore.float32)
|
||
>>> weight = Tensor(np.array([0.1, 0.6, -0.3]), mindspore.float32)
|
||
>>> net = Net()
|
||
>>> output = net(x, weight)
|
||
>>> print(output)
|
||
[[[-0.60 -0.50]
|
||
[-2.40 -1.80]
|
||
[ 0.60 0.30]]
|
||
[[ 0.00 1.00]
|
||
[ 2.00 3.00]
|
||
[ 4.0 5.00]]]
|
||
|