青岛市规划建设局网站,网页制作源码免费,网站建设商标保护,个人博客网站制作代码LayerNormlization 在许多的语言模型如Bert里#xff0c;虽然都是说做的LayerNormlization#xff0c;但计算均值和方差只会沿着channel维度做#xff0c;并不是沿着seq_L和channel维度一起做#xff0c;参考:BERT用的LayerNorm可能不是你认为的那个Layer Norm LayerNorm…LayerNormlization 在许多的语言模型如Bert里虽然都是说做的LayerNormlization但计算均值和方差只会沿着channel维度做并不是沿着seq_L和channel维度一起做参考:BERT用的LayerNorm可能不是你认为的那个Layer Norm LayerNormlization计算流程
init里初始化C_in大小的scale和shift向量沿Channel维度计算均值和方差归一化
代码 LayerNormInstanceNorm实现如下
class LayerNormalization(nn.Module):def __init__(self,hidden_dim,eps1e-6):super(LayerNormalization, self).__init__()self.epsepsself.gammann.Parameter(torch.ones(hidden_dim))self.betann.Parameter(torch.zeros(hidden_dim))def forward(self,x):B,seq_L,Cx.shapemeanx.mean(dim-1,keepdimTrue)stdx.std(dim-1,keepdimTrue)out(x-mean)/(stdself.eps)outout*self.gammaself.betareturn out
if __name____main__:tensor_inputtorch.rand(5,10,8)modelLayerNormalization(8)resmodel(tensor_input)print(res)