# Copyright (c) Facebook, Inc. and its affiliates.## This source code is licensed under the MIT license found in the# LICENSE file in the root directory of this source tree."""See "Gaussian Error Linear Units (GELUs)" by Dan Hendrycks and Kevin Gimpel withthe corresponding GitHub repo: https://github.com/hendrycks/GELUs"""importmathimporttorchimporttorch.nnasnndefgelu_accurate(x):ifnothasattr(gelu_accurate,"_a"):gelu_accurate._a=math.sqrt(2/math.pi)return(0.5*x*(1+torch.tanh(gelu_accurate._a*(x+0.044715*torch.pow(x,3)))))defgelu(x:torch.Tensor)->torch.Tensor:returntorch.nn.functional.gelu(x.float()).type_as(x)