LSTM、GRU 与 Transformer网络模型参数计算

参数计算公式对比

模型类型 参数计算公式 关键组成部分
LSTM 4 × (embed_dim × hidden_size + hidden_size² + hidden_size) 4个门控结构
GRU 3 × (embed_dim × hidden_size + hidden_size² + hidden_size) 3个门控结构
Transformer (Encoder) 12 × embed_dim² + 9 × embed_dim × ff_dim + 14 × embed_dim 多头注意力 + FFN
Transformer (Decoder) 14 × embed_dim² + 9 × embed_dim × ff_dim + 15 × embed_dim 多头注意力 + FFN + 掩码注意力

详细参数计算解析

1. LSTM 参数计算

LSTM 单元包含 4 个门控结构(输入门、遗忘门、候选单元、输出门)

Python

复制代码
LSTM_params = 4 × (input_size × hidden_size +   # Wi, Wf, Wc, Wo
                   hidden_size × hidden_size +  # Ui, Uf, Uc, Uo
                   hidden_size)                 # bi, bf, bc, bo

简化公式 : LSTM_params ≈ 4 × hidden_size × (input_size + hidden_size + 1)

2. GRU 参数计算

GRU 单元包含 3 个门控结构(更新门、重置门、候选门)

复制代码
GRU_params = 3 × (input_size × hidden_size +   # Wz, Wr, Wh
                  hidden_size × hidden_size +   # Uz, Ur, Uh
                  hidden_size)                 # bz, br, bh

简化公式 : GRU_params ≈ 3 × hidden_size × (input_size + hidden_size + 1)

3. Transformer 参数计算

Transformer 由多层堆叠,每层包含:

  • 多头注意力机制(Multi-Head Attention)
  • 前馈神经网络(Feed-Forward Network)
  • 层归一化(LayerNorm)
  • 残差连接(Skip Connections)
单层参数分解:
复制代码
# 多头注意力层
QKV_proj = 3 × embed_dim × embed_dim  # Wq, Wk, Wv
output_proj = embed_dim × embed_dim   # Wo
attention_params = 4 × embed_dim²

# 前馈神经网络
FFN_params = 2 × (embed_dim × ff_dim + ff_dim × embed_dim) + (ff_dim + embed_dim)
           = 2 × embed_dim × ff_dim + 2 × ff_dim × embed_dim + ff_dim + embed_dim
           = 4 × embed_dim × ff_dim + ff_dim + embed_dim

# 层归一化 (2个)
LayerNorm_params = 2 × 2 × embed_dim  # 每个LN有gamma和beta参数

# 总单层参数
Encoder_layer = attention_params + FFN_params + LayerNorm_params
              = 4×embed_dim² + (4×embed_dim×ff_dim + ff_dim + embed_dim) + 4×embed_dim

完整 Transformer 参数公式

对于 N 层 Transformer:

其中:

  • d = embed_dim (嵌入维度)
  • d_ff = ff_dim (前馈网络隐藏层维度)
  • Embedding = vocab_size × embed_dim (词嵌入参数)

参数对比示例

假设配置:

  • 嵌入维度 (embed_dim) = 512
  • 隐藏层维度 (hidden_size) = 512
  • FFN 维度 (ff_dim) = 2048
  • 词表大小 (vocab_size) = 50000
  • LSTM/GRU 层数 = 1
  • Transformer 层数 = 6

参数计算结果:

模型 参数计算 总量 占比
LSTM 4 × (512×512 + 512² + 512) = 4×(262,144 + 262,144 + 512) = 2,100,352 2.10M 基准
GRU 3 × (512×512 + 512² + 512) = 3×(262,144 + 262,144 + 512) = 1,574,400 1.57M 75%
Transformer Encoder 6×(4×512² + 4×512×2048 + 2048 + 5×512) + 50000×512 = 6×(1,048,576 + 4,194,304 + 2048 + 2,560) + 25,600,000 = 6×5,247,488 + 25,600,000 = **57,084,928** 57.1M 27.2倍
Embedding层 50000×512 = 25,600,000 25.6M -

参数计算工具函数

复制代码
def calculate_params(model_type, embed_dim, hidden_size=None, 
                     ff_dim=None, num_layers=1, vocab_size=None):
    params = 0
    
    if model_type == "LSTM":
        # LSTM参数计算
        params = 4 * (embed_dim * hidden_size + hidden_size**2 + hidden_size)
    
    elif model_type == "GRU":
        # GRU参数计算
        params = 3 * (embed_dim * hidden_size + hidden_size**2 + hidden_size)
    
    elif model_type == "Transformer-Encoder":
        # Transformer编码器参数计算
        per_layer = (4 * embed_dim**2) + (4 * embed_dim * ff_dim) + ff_dim + (5 * embed_dim)
        encoder_params = num_layers * per_layer
        embedding_params = vocab_size * embed_dim
        params = encoder_params + embedding_params
    
    elif model_type == "Transformer-Decoder":
        # Transformer解码器参数计算
        per_layer = (8 * embed_dim**2) + (4 * embed_dim * ff_dim) + ff_dim + (6 * embed_dim)
        decoder_params = num_layers * per_layer
        embedding_params = vocab_size * embed_dim
        params = decoder_params + embedding_params
    
    return params

# 示例使用
lstm_params = calculate_params("LSTM", embed_dim=512, hidden_size=512)
transformer_params = calculate_params("Transformer-Encoder", embed_dim=512, 
                                     ff_dim=2048, num_layers=6, vocab_size=50000)
相关推荐
啥都鼓捣的小yao9 小时前
Vision Transformer(ViT)深入浅出
人工智能·深度学习·transformer
Jsundoku2 天前
第七章 深度学习 -- Transformer 架构
人工智能·深度学习·transformer·1024程序员节
陈 洪 伟2 天前
Transformer彻底剖析(9):归一化演进——BatchNorm、LayerNorm、RMSNorm、Post-LN / Pre-LN、DeepNorm
人工智能·深度学习·transformer
布吉岛的石头2 天前
Java 程序员第 50 阶段3:数据工程:预训练语料清洗与去重
java·开发语言·人工智能·深度学习·transformer
爱听歌的周童鞋2 天前
MIT 6.5940 | TinyML 与高效 AI 计算 | Fall 2026 | 笔记 | Lecture 12:Transformer and LLM
transformer·大语言模型·tinyml·mit 6.5940·高效 ai 计算
EDPJ3 天前
(2026|中科院自动化所,路由冗余,动态分配的价值在激进剪枝,多模态更脆弱)你只需要选定专家的 2/3:细粒度 MoE LLM 中的动态专家剪枝
transformer·剪枝·moe·混合专家模型
前端.火鸡3 天前
参数量、上下文窗口与模型规格怎么看
人工智能·深度学习·transformer
一只废狗狗狗狗狗狗狗狗狗3 天前
Transformer——一个sequence-to-sequence的model
人工智能·自然语言处理·transformer
服务器硬件项目经理3 天前
第5章消费级vs专业级vs数据中心:显卡的门派
服务器·嵌入式硬件·gru·硬件工程·硬件
QN1幻化引擎4 天前
信号场注意力(SFA):把 KV Cache 变成 O(1) 的双通道注意力——0.1B/0.3B 受控 A/B 精度反升 15.5% / 24.3%
pytorch·深度学习·大模型·transformer·注意力机制·推理优化