mish

paddle.fluid.layers. mish ( x, threshold=20, name=None ) [源代码]

Mish激活函数。参考 Mish: A Self Regularized Non-Monotonic Neural Activation Function

\[ \begin{align}\begin{aligned}\begin{split}softplus(x) = \begin{cases} x, \text{if } x > \text{threshold} \\ \ln(1 + e^{x}), \text{otherwise} \end{cases}\end{split}\\Mish(x) = x * \tanh(softplus(x))\end{aligned}\end{align} \]

参数

  • x (Variable) - 多维 Tensor 或 LoDTensor,数据类型为 float32,float64。

  • threshold (float) - Mish激活函数中计算softplus的阈值。如果输入大于该阈值,将使用近似计算,默认值为 20.0。

  • name (str,可选) - 具体用法请参见 Name,一般无需设置,默认值为 None。

返回

  • Variable: Mish op 的结果,多维 Tensor 或 LoDTensor。数据类型为 float32 或 float64,数据类型以及形状和输入 x 一致。

代码示例

import paddle.fluid as fluid
import numpy as np

DATATYPE='float32'

x_data = np.array([i for i in range(1,5)]).reshape([1,1,4]).astype(DATATYPE)

x = fluid.data(name="x", shape=[None,1,4], dtype=DATATYPE)
y = fluid.layers.mish(x)

place = fluid.CPUPlace()
# place = fluid.CUDAPlace(0)
exe = fluid.Executor(place)
out, = exe.run(feed={'x':x_data}, fetch_list=[y.name])
print(out)  # [[0.66666667, 1.66666667, 3., 4.]]