GELU

class paddle.nn. GELU ( approximate=False, name=None ) [source]

GELU Activation.

If approximate is True

\[\begin{split}GELU(x) = 0.5 * x * (1 + tanh(\\sqrt{\\frac{2}{\\pi}} * (x + 0.044715x^{3})))\end{split}\]

else

\[\begin{split}GELU(x) = 0.5 * x * (1 + erf(\\frac{x}{\\sqrt{2}}))\end{split}\]
Parameters
  • approximate (bool, optional) – Wether to enable approximation. Default is False.

  • name (str, optional) – Name for the operation (optional, default is None). For more information, please refer to Name.

Shape:
  • input: Tensor with any shape.

  • output: Tensor with the same shape as input.

Examples

import paddle
import numpy as np

x = paddle.to_tensor(np.array([[-1, 0.5],[1, 1.5]]))

m = paddle.nn.GELU()
out = m(x) # [-0.158655 0.345731 0.841345 1.39979]

m = paddle.nn.GELU(True)
out = m(x) # [-0.158808 0.345714 0.841192 1.39957]
forward ( x )

forward

Defines the computation performed at every call. Should be overridden by all subclasses.

Parameters
  • *inputs (tuple) – unpacked tuple arguments

  • **kwargs (dict) – unpacked dict arguments

extra_repr ( )

extra_repr

Extra representation of this layer, you can have custom implementation of your own layer.