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

残差连接和层规范化

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

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

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])

相关推荐
flying_13141 分钟前
图神经网络分享系列-HAN(Heterogeneous Graph Attention Network)-torch(一)
深度学习·神经网络·torch·图神经网络·gat·han·语义级注意力
阿_旭1 分钟前
基于YOLO26深度学习的【电力巡检异常检测与语音提示系统】【python源码+Pyqt5界面+数据集+训练代码】
人工智能·python·深度学习·电力巡检异常检测
努力的小白o(^▽^)o6 分钟前
食品分类任务
人工智能·深度学习·计算机视觉
剑穗挂着新流苏3127 分钟前
205_深度学习的非线性魔法:多层感知机(MLP)与激活函数全解析
人工智能·pytorch·python·深度学习
硅谷秋水30 分钟前
世界链:潜运动中的世界模型思维
深度学习·计算机视觉·语言模型·机器人
沃达德软件1 小时前
5G技术推动移动视频监控
人工智能·深度学习·5g·目标检测·机器学习·计算机视觉
AI医影跨模态组学1 小时前
eClinMed(IF=10)上海交通大学医学院附属仁济医院泌尿外科陈锐教授等团队:用于原发性腹膜后肿瘤诊断与分割的端到端深度学习模型
人工智能·深度学习·医学·医学影像·影像组学
凸头1 小时前
CRAG、Self-RAG、Adaptive RAG 经典论文总结概要
人工智能·深度学习·机器学习·rag
放下华子我只抽RuiKe51 小时前
深度学习-04-NLP项目实战
人工智能·深度学习·学习·自然语言处理·openclaw·development
2401_876907522 小时前
《Python深度学习》
开发语言·python·深度学习