gelu

paddle.fluid.layers. gelu ( x ) [源代码]

逐元素计算 Gelu激活函数。更多细节请参考 Gaussian Error Linear Units

如果使用近似计算:

gelu - 图1

如果不使用近似计算:

gelu - 图2

参数:

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

  • approximate (bool, 可选) - 是否使用近似计算,默认值为 False。

返回:

  • 多维 Tensor 或 LoDTensor, 数据类型为 float32 或 float64, 和输入 x 的数据类型相同,形状和输入 x 相同。

返回类型:

  • Variable

代码示例

  1. # declarative mode
  2. import numpy as np
  3. from paddle import fluid
  4. x = fluid.data(name="x", shape=(-1, 3), dtype="float32")
  5. y = fluid.layers.gelu(x)
  6. place = fluid.CPUPlace()
  7. exe = fluid.Executor(place)
  8. start = fluid.default_startup_program()
  9. main = fluid.default_main_program()
  10. data = np.random.randn(2, 3).astype("float32")
  11. exe.run(start)
  12. y_np, = exe.run(main, feed={"x": data}, fetch_list=[y])
  13. data
  14. # array([[ 0.87165993, -1.0541513 , -0.37214822],
  15. # [ 0.15647964, 0.32496083, 0.33045998]], dtype=float32)
  16. y_np
  17. # array([[ 0.70456535, -0.15380788, -0.13207214],
  18. # [ 0.08796856, 0.20387867, 0.2080159 ]], dtype=float32)
  1. # imperative mode
  2. import numpy as np
  3. from paddle import fluid
  4. import paddle.fluid.dygraph as dg
  5. data = np.random.randn(2, 3).astype("float32")
  6. place = fluid.CPUPlace()
  7. with dg.guard(place) as g:
  8. x = dg.to_variable(data)
  9. y = fluid.layers.gelu(x)
  10. y_np = y.numpy()
  11. data
  12. # array([[ 0.87165993, -1.0541513 , -0.37214822],
  13. # [ 0.15647964, 0.32496083, 0.33045998]], dtype=float32)
  14. y_np
  15. # array([[ 0.70456535, -0.15380788, -0.13207214],
  16. # [ 0.08796856, 0.20387867, 0.2080159 ]], dtype=float32)