当前位置: 首页 > wzjs >正文

厦门哪家做网站好六六seo基础运营第三讲

厦门哪家做网站好,六六seo基础运营第三讲,白城网站建设哪家专业,网站设计网站建设毕业文稿目录 代码代码解释导入和激活函数配置类初始化方法前向传播方法计算流程 代码可视化 代码 import torch import torch.nn as nn import torch.nn.functional as F# 定义激活函数字典 ACT2FN {"relu": F.relu,"gelu": F.gelu,"silu": F.silu,&q…

目录

    • 代码
    • 代码解释
      • 导入和激活函数
      • 配置类
      • 初始化方法
      • 前向传播方法
      • 计算流程
    • 代码可视化

代码

import torch
import torch.nn as nn
import torch.nn.functional as F# 定义激活函数字典
ACT2FN = {"relu": F.relu,"gelu": F.gelu,"silu": F.silu,"swish": lambda x: x * torch.sigmoid(x),"gelu_new": lambda x: 0.5 * x * (1.0 + torch.tanh(math.sqrt(2.0 / math.pi) * (x + 0.044715 * torch.pow(x, 3.0)))),
}# 简单的配置类
class ModelConfig:def __init__(self, hidden_size=768, intermediate_size=3072, hidden_act="gelu"):self.hidden_size = hidden_sizeself.intermediate_size = intermediate_sizeself.hidden_act = hidden_actclass DeepseekV3MLP(nn.Module):def __init__(self, config, hidden_size=None, intermediate_size=None):super().__init__()self.config = configself.hidden_size = config.hidden_size if hidden_size is None else hidden_sizeself.intermediate_size = config.intermediate_size if intermediate_size is None else intermediate_sizeself.gate_proj = nn.Linear(self.hidden_size, self.intermediate_size, bias=False)self.up_proj = nn.Linear(self.hidden_size, self.intermediate_size, bias=False)self.down_proj = nn.Linear(self.intermediate_size, self.hidden_size, bias=False)self.act_fn = ACT2FN[config.hidden_act]def forward(self, x):# 打印输入张量的维度print(f"输入 x 的维度: {x.shape}")# 步骤1: 通过gate_proj线性层gate_output = self.gate_proj(x)print(f"gate_proj(x) 的维度: {gate_output.shape}")# 步骤2: 应用激活函数gate_activated = self.act_fn(gate_output)print(f"act_fn(gate_proj(x)) 的维度: {gate_activated.shape}")# 步骤3: 通过up_proj线性层up_output = self.up_proj(x)print(f"up_proj(x) 的维度: {up_output.shape}")# 步骤4: 元素级乘法gated_up = gate_activated * up_outputprint(f"act_fn(gate_proj(x)) * up_proj(x) 的维度: {gated_up.shape}")# 步骤5: 通过down_proj线性层down_proj = self.down_proj(gated_up)print(f"down_proj(act_fn(gate_proj(x)) * up_proj(x)) 的维度: {down_proj.shape}")return down_proj

代码解释

导入和激活函数

首先导入了必要的 PyTorch 库,并定义了一个激活函数字典 ACT2FN,包含了多种常用的激活函数:

  • relu: 修正线性单元激活函数
  • gelu: 高斯误差线性单元激活函数
  • silu: Sigmoid线性单元激活函数
  • swish: Swish激活函数 (x * sigmoid(x))
  • gelu_new: GELU激活函数的另一种实现方式

配置类

ModelConfig 类用于存储模型的基本配置参数:

  • hidden_size: 隐藏层大小,默认为768
  • intermediate_size: 中间层大小,默认为3072
  • hidden_act: 使用的激活函数类型,默认为"gelu"

初始化方法

def __init__(self, config, hidden_size=None, intermediate_size=None):

初始化方法接收配置对象和可选的隐藏层大小和中间层大小参数,创建了三个线性层:

  • gate_proj: 门控投影层,将输入从 hidden_size 映射到 intermediate_size
  • up_proj: 上投影层,同样将输入从 hidden_size 映射到 intermediate_size
  • down_proj: 下投影层,将中间结果从 intermediate_size 映射回 hidden_size

前向传播方法

前向传播方法实现了 SwiGLU 激活机制的变体,具体步骤如下:

  1. 输入张量 x 通过 gate_proj 线性层
  2. gate_proj 的输出应用激活函数
  3. 输入张量 x 通过 up_proj 线性层
  4. 将激活后的 gate_proj 输出与 up_proj 输出进行元素级乘法
  5. 将乘法结果通过 down_proj 线性层映射回原始维度

这种设计是 SwiGLU 激活的一种变体,通过门控机制增强了模型的表达能力。每一步都打印了张量的维度,便于调试和理解数据流。

计算流程

假设输入张量维度为 [batch_size, seq_length, hidden_size],例如 [2, 10, 768]:

  1. 通过 gate_proj 和 up_proj 后,维度变为 [2, 10, 3072]
  2. 激活函数和元素级乘法保持维度不变
  3. 最后通过 down_proj 将维度映射回 [2, 10, 768]

这种设计允许模型在中间层扩展维度以增加表达能力,然后再压缩回原始维度,是现代大型语言模型中常用的技术。

代码可视化

def main():# 创建配置config = ModelConfig(hidden_size=768, intermediate_size=3072, hidden_act="gelu")# 实例化模型model = DeepseekV3MLP(config)# 创建一个随机输入张量进行测试batch_size = 2seq_length = 10input_tensor = torch.rand(batch_size, seq_length, config.hidden_size)# 前向传播output = model(input_tensor)# 打印输入和输出的形状print(f"模型参数总数: {sum(p.numel() for p in model.parameters())}")if __name__ == "__main__":main()
输入 x 的维度: torch.Size([2, 10, 768])
gate_proj(x) 的维度: torch.Size([2, 10, 3072])
act_fn(gate_proj(x)) 的维度: torch.Size([2, 10, 3072])
up_proj(x) 的维度: torch.Size([2, 10, 3072])
act_fn(gate_proj(x)) * up_proj(x) 的维度: torch.Size([2, 10, 3072])
down_proj(act_fn(gate_proj(x)) * up_proj(x)) 的维度: torch.Size([2, 10, 768])
模型参数总数: 7077888

在这里插入图片描述

http://www.dtcms.com/wzjs/407485.html

相关文章:

  • b2b网站计划书什么是网站推广?
  • 网站注销主体注销今日国内新闻最新消息10条
  • 怎么做微信推送 网站免费视频外链生成推荐
  • 建网站和做微信哪个好如何创建一个自己的网站
  • 攀枝花仁和住房和城乡建设局网站百度下载安装2021
  • 卓越网站建设的优点sem竞价推广代运营
  • 商业空间设计心得体会seo线上培训多少钱
  • 建筑方案设计步骤seo网络培训机构
  • 外贸网站导航栏建设技巧网站推广培训
  • 网站排队队列怎么做怎样做一个网站平台
  • 织梦网站logo修改我对网络营销的理解
  • 做搜狗pc网站优化最新天气预报最新消息
  • 如何做网站赚钱百度网盘下载速度慢破解方法
  • 微商的自己做网站叫什么软件如何自己做一个软件
  • 做相亲网站赚钱吗北京疫情最新新闻
  • 建设网站简单教程百度官网网址
  • 2017年网站建设视频教程网站建设制作模板
  • 买过域名之前就可以做网站了吗?排名优化网站
  • 织梦网站301跳转怎么做厦门seo排名外包
  • 网站建设有什么品牌官网seo优化找哪家做
  • 东莞桂城网站建设优化seo排名
  • 网站维护 费用微信小程序怎么开通
  • 玉溪建设局门户网站海外网站seo优化
  • 程序员网站建设百度网盘搜索引擎官方入口
  • 华为网站建设策划书精准引流客源的方法可靠吗
  • 程序员网站建设网站托管维护
  • 国外设计网址广州专做优化的科技公司
  • 成都那家网站做的好青岛网站推广企业
  • 做白酒用哪个分类信息网站seo就是搜索引擎广告
  • 福建省网站建设公司持续优化疫情防控举措