比较与torch.nn.GELU的功能差异

torch.nn.GELU

class torch.nn.GELU()(input) -> Tensor

更多内容详见torch.nn.GELU

mindspore.nn.GELU

class mindspore.nn.GELU(approximate=True)(x) -> Tensor

更多内容详见mindspore.nn.GELU

差异对比

PyTorch:该函数表示高斯误差线性单位函数\(GELU(X)=X\times \Phi(x)\),其中\(\Phi(x)\)是高斯分布的积累分布函数。输入x表示任意数量的维度。

MindSpore:MindSpore此API实现功能与PyTorch基本一致。

分类

子类

PyTorch

MindSpore

差异

参数

参数1

-

approximate

决定是否启用approximation,默认值为True。经测试,approximate为False后,输出结果与Pytorch更加相似。

输入

单输入

input

x

功能一致,参数名不同

代码示例1

两API实现功能一致,用法相同。

# PyTorch
import torch
input_x = torch.Tensor([[2, 4], [1, 2]])
output = torch.nn.GELU()(input_x)
print(output.detach().numpy())
# [[1.9544997 3.9998734]
#  [0.8413447 1.9544997]]

# MindSpore
import mindspore
import numpy as np
x = mindspore.Tensor(np.array([[2, 4], [1, 2]]), mindspore.float32)
output = mindspore.nn.GELU(approximate=False)(x)
print(output)
# [[1.9544997 3.9998732]
#  [0.8413447 1.9544997]]