用pytorch构造GELU激活函数

因为一些原因必须使用python2+低版本的pytorch来跑代码,其中就遇到了低版本pytorch没有封装GELU激活函数的情况,所以在网上把该函数的源码找到了,自己构造了一个基于nn.Module的版本:

class GELU(nn.Module):#zengen
    def __init__(self):
        super(GELU, self).__init__()
    def forward(self, x):
        #return 0.5*x*(1+torch.tanh(np.sqrt(2/np.pi)*(x+0.044715*torch.pow(x,3))))
        return x * 0.5 * (1.0 + torch.erf(x / math.sqrt(2.0)))

其中第一个注释掉了的return是gelu原文中提出的一种近似计算版本,而下面那一个是pytorch中封装的版本,实测第一种会和nn.GELU计算的值略有差异,因此使用第二种。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值