【大模型手撕】pytorch实现LayerNorm, RMSNorm

LayerNorm介绍请参考:【AI知识】归一化、批量归一化 、 层归一化 和 实例归一化

RMSNorm介绍请参考:【大模型知识点】RMSNorm(Root Mean Square Normalization)均方根归一化

LayerNorm实现:

python 复制代码
import torch 
import torch.nn as nn


class LayerNorm(nn.Module):
    def __init__(self,dim,eps=1e-5,bias=False):
        super().__init__()
        self.dim = dim
        self.eps = eps
        # 可训练的缩放参数
        self.gamma = nn.Parameter(torch.ones(dim))

        self.bias = nn.Parameter(torch.zeros(dim)) if bias else None
    
    def forward(self,x):
        # x: (batch_size,seq_len,dim)
        # 计算均值 x_mean : (batch_size,seq_len,dim)
        x_mean = x.mean(-1,keepdim=True)
        # 计算均方根 rms :  (batch_size,seq_len,dim)
        rms = torch.sqrt(x.pow(2).mean(-1,keepdim=True)+self.eps)

        if self.bias:
            return self.gamma*((x-x_mean)/rms)+self.bias
        else:
            return self.gamma*((x-x_mean)/rms)

RMSNorm实现:

python 复制代码
import torch 
import torch.nn as nn

class RMSNorm(nn.Module):
    def __init__(self,dim,eps=1e-5,bias=False):
   		super().__init__()
        self.dim = dim 
        self.eps = eps
        # 可训练的缩放参数
        self.gamma = nn.Parameter(torch.ones(dim))
        self.bias = nn.Parameter(torch.zeros(dim)) if bias else None
    def forward(self,x):
        # 计算输入的均方根
        # x: (batch_size,seq_len,dim)
        # .mean(-1,keepdim=True) : 在最后一个维度(特征维度)上计算平均值,并保持维度不变
        # rms : (batch_size,seq_len,1)
        rms = torch.sqrt(x.pow(2).mean(-1,keepdim=True)+self.eps)

        if self.bias:
            return self.gamma*(x/rms) + self.bias
        else:
            return self.gamma*(x/rms)
相关推荐
智算菩萨1 天前
《自动驾驶与大模型融合新趋势:端到端感知-决策一体化架构分析》
人工智能·架构·自动驾驶
8K超高清1 天前
超高清科技引爆中国电影向“新”力
大数据·运维·服务器·网络·人工智能·科技
申耀的科技观察1 天前
【观察】为AI就绪筑基,为产业智能引路,联想凌拓铺就AI规模化落地通途
人工智能·百度
y***03171 天前
深入了解Text2SQL开源项目(Chat2DB、SQL Chat 、Wren AI 、Vanna)
人工智能·sql·开源
Deepoch1 天前
Deepoc-M落地:给仪器设计装上“智能引擎”
人工智能·具身模型
老欧学视觉1 天前
0010集成学习(Ensemble Learning)
人工智能·机器学习·集成学习
玩大数据的龙威1 天前
农经权二轮延包—批量替换签名盖章页扫描页
python
lqqjuly1 天前
《AI Agent智能体与MCP开发实战》之构建个性化的arXiv科研论文MCP服务实战
人工智能·深度学习
羊仔AI探索1 天前
GLM-4.6接入Claude Code插件,国内丝滑编程
ide·人工智能·ai·aigc·ai编程
Bdygsl1 天前
数字图像处理总结 Day 1
人工智能·算法·计算机视觉