人工智能-注意力机制之残差连接和层规范化

残差连接和层规范化

层规范化和批量规范化的目标相同,但层规范化是基于特征维度进行规范化。尽管批量规范化在计算机视觉中被广泛应用,但在自然语言处理任务中(输入通常是变长序列)批量规范化通常不如层规范化的效果好。

以下代码对比不同维度的层规范化和批量规范化的效果。

python 复制代码
ln = nn.LayerNorm(2)
bn = nn.BatchNorm1d(2)
X = torch.tensor([[1, 2], [2, 3]], dtype=torch.float32)
# 在训练模式下计算X的均值和方差
print('layer norm:', ln(X), '\nbatch norm:', bn(X))
复制代码
layer norm: tensor([[-1.0000,  1.0000],
        [-1.0000,  1.0000]], grad_fn=<NativeLayerNormBackward0>)
batch norm: tensor([[-1.0000, -1.0000],
        [ 1.0000,  1.0000]], grad_fn=<NativeBatchNormBackward0>)

现在可以使用残差连接和层规范化来实现AddNorm类。暂退法也被作为正则化方法使用。

python 复制代码
#@save
class AddNorm(nn.Module):
    """残差连接后进行层规范化"""
    def __init__(self, normalized_shape, dropout, **kwargs):
        super(AddNorm, self).__init__(**kwargs)
        self.dropout = nn.Dropout(dropout)
        self.ln = nn.LayerNorm(normalized_shape)

    def forward(self, X, Y):
        return self.ln(self.dropout(Y) + X)

残差连接要求两个输入的形状相同,以便加法操作后输出张量的形状相同。

python 复制代码
add_norm = AddNorm([3, 4], 0.5)
add_norm.eval()
add_norm(torch.ones((2, 3, 4)), torch.ones((2, 3, 4))).shape

torch.Size([2, 3, 4])

相关推荐
哥布林学者23 分钟前
吴恩达深度学习课程五:自然语言处理 第二周:词嵌入 课后习题与代码实践
深度学习·ai
HyperAI超神经38 分钟前
加州大学构建基于全连接神经网络的片上光谱仪,在芯片级尺寸上实现8纳米的光谱分辨率
人工智能·深度学习·神经网络·机器学习·ai编程
杭州杭州杭州1 小时前
李沐动手学深度学习笔记(4)---物体检测基础
人工智能·笔记·深度学习
有Li3 小时前
学习通过皮层发育连续性迁移实现全生命周期脑解剖对应/文献速递-基于人工智能的医学影像技术
人工智能·深度学习·机器学习
狮子座明仔4 小时前
Plan-and-Act:让AI智能体学会“先想后做“
人工智能·深度学习·语言模型·自然语言处理
lixin5565566 小时前
基于迁移学习的图像风格增强器
java·人工智能·pytorch·python·深度学习·语言模型
byzh_rc6 小时前
[数学建模从入门到入土] 评价模型
网络·人工智能·深度学习·数学建模·回归·ar
Yngz_Miao7 小时前
【深度学习】语义分割损失函数之SemScal Loss
人工智能·深度学习·语义分割·损失函数·semscalloss
Dingdangcat867 小时前
YOLOv26_数字万用表端口连接检测与识别_基于深度学习的自动识别系统
人工智能·深度学习·yolo
新缸中之脑7 小时前
微调 BERT 实现命名实体识别
人工智能·深度学习·bert