GLU

class paddle.nn. GLU ( axis=- 1, name=None ) [源代码]

GLU 激活层(GLU Activation Operator)

门控线性单元。输入按照给定的维度二等分,其中第一部分被用作内容,第二部分经过一个 sigmoid 函数之后被用作门限。输出是内容和门限的逐元素乘积。更多细节请参考 Language Modeling with Gated Convolutional Networks

\[\mathrm{GLU}(a, b) = a \otimes \sigma(b)\]

参数

  • axis (int,可选) - 沿着该轴将输入二等分。\(D\) 为输入的维数,则 axis 应该在 \([-D, D)\) 的范围内。如 axis 为负数,则相当于 \(axis + D\),默认值为-1。

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

形状

  • input:shape[axis]为偶数的 Tensor。

  • output: 数据类型与输入一致,在指定的轴上其尺寸减半的 Tensor。

代码示例

>>> import paddle
>>> x = paddle.to_tensor(
...     [[-0.22014759, -1.76358426,  0.80566144,  0.04241343],
...         [-1.94900405, -1.89956081,  0.17134808, -1.11280477]]
... )
>>> m = paddle.nn.GLU()
>>> out = m(x)
>>> print(out)
Tensor(shape=[2, 2], dtype=float32, place=Place(cpu), stop_gradient=True,
[[-0.15216254, -0.90048921],
[-1.05778778, -0.46985325]])