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

残差连接和层规范化

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

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

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

相关推荐
快乐on9仔1 小时前
NLP学习(一)transformers之pipeline体验
人工智能·深度学习
Black蜡笔小新3 小时前
企业私有化AI训练推理一体工作站DLTM深度学习推理工作站重塑安全监控智能化体系
人工智能·深度学习
小a彤3 小时前
ops-nn 快速上手 - 神经网络算子使用入门指南
人工智能·深度学习·神经网络
Yunzenn3 小时前
深度分析字节最新研究cola-DLM 第 07 章:推理流水线逐行拆解 —— 从 prompt 到生成文本
人工智能·驱动开发·深度学习·chatgpt·架构·prompt·github
AI医影跨模态组学3 小时前
J Hepatol(IF=33.0)英国帝国理工学院:基于机器学习的影像组学模型在预测肝细胞癌免疫治疗结局中优于临床生物标志物
人工智能·深度学习·机器学习·论文·医学影像·影像组学
ujainu小4 小时前
CANN ops-transformer:MC2 通算融合如何减少通信开销
人工智能·深度学习·transformer
薛会4 小时前
π₀.₇:用“丰富提示词“教机器人像大语言模型一样组合技能
人工智能·深度学习·机器学习
生成论实验室5 小时前
Transformer架构上的语言模型自已评判“判断力缺失”
人工智能·深度学习·语言模型·自然语言处理·transformer
HyperAI超神经6 小时前
30分钟整合550篇文献,生物学多智能体Robin跑通自主科研闭环,挖掘dAMD候选疗法
人工智能·深度学习·ai
拓朗工控6 小时前
边缘计算与深度学习:为何必须选择工业计算机而非商用台式机
深度学习·边缘计算·工控机·工业电脑·拓朗工控