mindspore.ops.gelu

mindspore.ops.gelu(input_x, approximate='none')[source]

Gaussian Error Linear Units activation function.

GeLU is described in the paper Gaussian Error Linear Units (GELUs). And also please refer to BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding.

When approximate argument is none, GeLU is defined as follows:

\[GELU(x_i) = x_i*P(X < x_i)\]

where \(P\) is the cumulative distribution function of the standard Gaussian distribution, \(x_i\) is the input element.

When approximate argument is tanh, GeLU is estimated with:

\[GELU(x_i) = 0.5 * x_i * (1 + tanh(\sqrt(2 / \pi) * (x_i + 0.044715 * x_i^3)))\]
Parameters
  • input_x (Tensor) – The input of the activation function GeLU, the data type is float16, float32 or float64.

  • approximate (str) – the gelu approximation algorithm to use. Acceptable vaslues are ‘none’ and ‘tanh’. Default: ‘none’.

Returns

Tensor, with the same type and shape as input_x.

Raises
  • TypeError – If input_x is not a Tensor.

  • TypeError – If dtype of input_x is not float16, float32 or float64.

  • ValueError – If approximate value is neither none or tanh.

Supported Platforms:

Ascend CPU GPU

Examples

>>> x = Tensor([1.0, 2.0, 3.0], mindspore.float32)
>>> result = ops.gelu(x)
>>> print(result)
[0.841192 1.9545976 2.9963627]