[从0开始AIGC][Transformer相关]:Transformer中的激活函数:Relu、GELU、GLU、Swish
在Transformer模型中,常用的激活函数有ReLU、GELU、GLU和Swish。
- ReLU(Rectified Linear Unit): 这是最简单的激活函数,定义为 max(0, x)。
import torch
import torch.nn as nn
relu = nn.ReLU()
print(relu(torch.tensor([-1, 2, 0])))
- GELU(Gaussian Error Linear Unit): 这是一个平滑的激活函数,近似正态分布的pdf。
import torch
import torch.nn as nn
gelu = nn.GELU()
print(gelu(torch.tensor([-1, 2, 0])))
- GLU(Gated Linear Unit): GLU是在自注意力机制中使用的一个函数,它由线性部分和激活部分组成。
import torch
import torch.nn as nn
glu = nn.GLU(dim=1)
print(glu(torch.tensor([[-1, 2], [3, -4], [0, 5]])))
- Swish:这是谷歌提出的一个自适应的激活函数,它是一个非单调的函数,在某个区间内是线性的,在另一个区间内是ReLU函数。
import torch
import torch.nn as nn
class Swish(nn.Module):
def forward(self, x):
return x * torch.sigmoid(x)
swish = Swish()
print(swish(torch.tensor([-1, 2, 0])))
以上代码展示了如何在PyTorch中实现这些激活函数。在实践中,可以根据模型的具体需求选择合适的激活函数。
评论已关闭