做网站的叫什么思耐,wordpress login form,wordpress 调试插件下载,电子商务营销方法残差连接和层规范化
层规范化和批量规范化的目标相同#xff0c;但层规范化是基于特征维度进行规范化。尽管批量规范化在计算机视觉中被广泛应用#xff0c;但在自然语言处理任务中#xff08;输入通常是变长序列#xff09;批量规范化通常不如层规范化的效果好。
以下代…残差连接和层规范化
层规范化和批量规范化的目标相同但层规范化是基于特征维度进行规范化。尽管批量规范化在计算机视觉中被广泛应用但在自然语言处理任务中输入通常是变长序列批量规范化通常不如层规范化的效果好。
以下代码对比不同维度的层规范化和批量规范化的效果。
ln nn.LayerNorm(2)
bn nn.BatchNorm1d(2)
X torch.tensor([[1, 2], [2, 3]], dtypetorch.float32)
# 在训练模式下计算X的均值和方差
print(layer norm:, ln(X), \nbatch norm:, bn(X)) layer norm: tensor([[-1.0000, 1.0000],[-1.0000, 1.0000]], grad_fnNativeLayerNormBackward0)
batch norm: tensor([[-1.0000, -1.0000],[ 1.0000, 1.0000]], grad_fnNativeBatchNormBackward0) 现在可以使用残差连接和层规范化来实现AddNorm类。暂退法也被作为正则化方法使用。
#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)
残差连接要求两个输入的形状相同以便加法操作后输出张量的形状相同。
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])