悠扬随风 发表于 2025-4-10 21:24:29

AI 大模子之 Transformer 架构深入分析

AI 大模子之 Transformer 架构深入分析

本人掘金号,接待点击关注:掘金号地点

本人公众号,接待点击关注:公众号地点

一、弁言

在人工智能的发展进程中,Transformer 架构无疑是一座具有里程碑意义的丰碑。自从 2017 年 Google 团队在论文《Attention Is All You Need》中初次提出 Transformer 架构以来,它便迅速在天然语言处置处罚(NLP)范畴引发了革命性的厘革,并渐渐拓展到盘算机视觉、语音识别等多个范畴。Transformer 架构以其杰出的并行盘算能力、强大的长序列处置处罚能力以及出色的建模效果,成为了众多先辈大模子的核心基础,如 GPT 系列、BERT 等。
本文将深入分析 Transformer 架构,从其核心原理、组件构成到源码实现,进行全方位、过细入微的分析。通过对源码的逐行解读,资助读者深入理解 Transformer 架构的工作机制,为进一步研究和应用基于 Transformer 的大模子奠定坚固的基础。
二、Transformer 架构概述

2.1 传统序列处置处罚模子的范围性

在 Transformer 架构出现之前,循环神经网络(RNN)及其变体,如长短期记忆网络(LSTM)和门控循环单元(GRU),是处置处罚序列数据的主流模子。然而,这些模子存在一些固有的范围性:


[*]顺序盘算题目:RNN 及其变体在处置处罚序列数据时,必要按顺序依次处置处罚每个时间步的输入,这使得它们难以进行并行盘算,从而限定了模子的训练速度和处置处罚长序列的能力。
[*]长间隔依赖题目:在处置处罚长序列时,RNN 及其变体容易出现梯度消散或梯度爆炸的题目,导致模子难以捕捉序列中的长间隔依赖关系。
2.2 Transformer 架构的提出

为相识决传统序列处置处罚模子的范围性,Google 团队提出了 Transformer 架构。Transformer 架构摒弃了传统的循环布局,完全基于留意力机制(Attention Mechanism)构建,从而实现了并行盘算,大大进步了模子的训练效率和处置处罚长序列的能力。
2.3 Transformer 架构的主要特点



[*]并行盘算:Transformer 架构通过自留意力机制(Self-Attention Mechanism)可以同时处置处罚序列中的所有元素,从而实现了并行盘算,进步了模子的训练速度。
[*]长间隔依赖建模:自留意力机制可以直接捕捉序列中任意两个元素之间的依赖关系,有效解决了长间隔依赖题目。
[*]灵活性:Transformer 架构可以灵活地应用于各种序列处置处罚任务,如呆板翻译、文本生成、问答系统等。
三、Transformer 架构的核心原理

3.1 留意力机制(Attention Mechanism)

3.1.1 留意力机制的基本概念

留意力机制是一种模拟人类留意力的机制,它可以让模子在处置处罚序列数据时,主动地关注序列中的重要部门。在天然语言处置处罚中,留意力机制可以资助模子更好地捕捉上下文信息,从而进步模子的性能。
3.1.2 缩放点积留意力(Scaled Dot-Product Attention)

缩放点积留意力是 Transformer 架构中使用的一种留意力机制,其盘算公式如下: (\text{Attention}(Q, K, V) = \text{softmax}(\frac{QK^T}{\sqrt{d_k}})V) 此中,Q 是查询矩阵(Query Matrix),K 是键矩阵(Key Matrix),V 是值矩阵(Value Matrix),(d_k) 是键向量的维度。
以下是缩放点积留意力的 Python 代码实现:
python
import torch
import torch.nn as nn
import torch.nn.functional as F

# 定义缩放点积注意力类
class ScaledDotProductAttention(nn.Module):
    def __init__(self, d_k):
      super(ScaledDotProductAttention, self).__init__()
      # 键向量的维度
      self.d_k = d_k

    def forward(self, q, k, v, mask=None):
      # 计算 Q 和 K 的转置的点积
      attn_scores = torch.matmul(q, k.transpose(-2, -1))
      # 缩放点积
      attn_scores = attn_scores / torch.sqrt(torch.tensor(self.d_k, dtype=torch.float32))

      if mask is not None:
            # 如果有掩码,将掩码位置的注意力分数设为负无穷
            attn_scores = attn_scores.masked_fill(mask == 0, -1e9)

      # 对注意力分数进行 softmax 操作,得到注意力权重
      attn_weights = F.softmax(attn_scores, dim=-1)
      # 计算注意力输出
      output = torch.matmul(attn_weights, v)
      return output, attn_weights
3.1.3 多头留意力(Multi-Head Attention)

多头留意力是缩放点积留意力的扩展,它通过将查询、键和值分别投影到多个低维子空间中,然后在每个子空间中独立地盘算留意力,最后将所有子空间的留意力输出拼接起来并进行线性变更,得到终极的留意力输出。
多头留意力的盘算公式如下: (\text{MultiHead}(Q, K, V) = \text{Concat}(\text{head}_1, \ldots, \text{head}_h)W^O) 此中,(\text{head}_i = \text{Attention}(QW_i^Q, KW_i^K, VW_iV)),(W_iQ)、(W_iK)、(W_iV) 是投影矩阵,(W^O) 是输出矩阵。
以下是多头留意力的 Python 代码实现:
python
# 定义多头注意力类
class MultiHeadAttention(nn.Module):
    def __init__(self, d_model, num_heads):
      super(MultiHeadAttention, self).__init__()
      # 模型的维度
      self.d_model = d_model
      # 注意力头的数量
      self.num_heads = num_heads
      # 每个头的维度
      self.d_k = d_model // num_heads

      # 定义查询、键和值的线性变换层
      self.W_q = nn.Linear(d_model, d_model)
      self.W_k = nn.Linear(d_model, d_model)
      self.W_v = nn.Linear(d_model, d_model)
      # 定义输出的线性变换层
      self.W_o = nn.Linear(d_model, d_model)

      # 定义缩放点积注意力层
      self.attention = ScaledDotProductAttention(self.d_k)

    def forward(self, q, k, v, mask=None):
      batch_size = q.size(0)

      # 对查询、键和值进行线性变换
      Q = self.W_q(q)
      K = self.W_k(k)
      V = self.W_v(v)

      # 将查询、键和值分割成多个头
      Q = Q.view(batch_size, -1, self.num_heads, self.d_k).transpose(1, 2)
      K = K.view(batch_size, -1, self.num_heads, self.d_k).transpose(1, 2)
      V = V.view(batch_size, -1, self.num_heads, self.d_k).transpose(1, 2)

      if mask is not None:
            # 如果有掩码,将掩码扩展到每个头
            mask = mask.unsqueeze(1)

      # 计算多头注意力输出
      output, attn_weights = self.attention(Q, K, V, mask)

      # 将多头注意力输出拼接起来
      output = output.transpose(1, 2).contiguous().view(batch_size, -1, self.d_model)
      # 对拼接后的输出进行线性变换
      output = self.W_o(output)

      return output, attn_weights
3.2 位置编码(Positional Encoding)

由于 Transformer 架构摒弃了传统的循环布局,它无法主动捕捉序列中元素的位置信息。为相识决这个题目,Transformer 架构引入了位置编码(Positional Encoding),将位置信息添加到输入序列的词向量中。
位置编码的盘算公式如下: (PE_{(pos, 2i)} = \sin(\frac{pos}{10000^{\frac{2i}{d_{model}}}})) (PE_{(pos, 2i + 1)} = \cos(\frac{pos}{10000^{\frac{2i}{d_{model}}}})) 此中,pos 是元素的位置,i 是维度索引,(d_{model}) 是模子的维度。
以下是位置编码的 Python 代码实现:
python
import torch
import torch.nn as nn

# 定义位置编码类
class PositionalEncoding(nn.Module):
    def __init__(self, d_model, max_len=5000):
      super(PositionalEncoding, self).__init__()
      # 模型的维度
      self.d_model = d_model

      # 创建位置编码矩阵
      pe = torch.zeros(max_len, d_model)
      position = torch.arange(0, max_len, dtype=torch.float).unsqueeze(1)
      div_term = torch.exp(torch.arange(0, d_model, 2).float() * (-torch.log(torch.tensor(10000.0)) / d_model))
      pe[:, 0::2] = torch.sin(position * div_term)
      pe[:, 1::2] = torch.cos(position * div_term)
      pe = pe.unsqueeze(0)
      # 将位置编码矩阵注册为缓冲区,不参与模型训练
      self.register_buffer('pe', pe)

    def forward(self, x):
      # 将位置编码添加到输入序列的词向量中
      x = x + self.pe[:, :x.size(1)]
      return x
3.3 前馈神经网络(Feed-Forward Network)

前馈神经网络是 Transformer 架构中的另一个重要组件,它由两个线性层和一个激活函数组成。前馈神经网络的盘算公式如下: (\text{FFN}(x) = \text{max}(0, xW_1 + b_1)W_2 + b_2) 此中,(W_1)、(W_2) 是权重矩阵,(b_1)、(b_2) 是偏置向量。
以下是前馈神经网络的 Python 代码实现:
python
import torch
import torch.nn as nn

# 定义前馈神经网络类
class PositionwiseFeedForward(nn.Module):
    def __init__(self, d_model, d_ff):
      super(PositionwiseFeedForward, self).__init__()
      # 定义第一个线性层
      self.fc1 = nn.Linear(d_model, d_ff)
      # 定义第二个线性层
      self.fc2 = nn.Linear(d_ff, d_model)
      # 定义激活函数
      self.relu = nn.ReLU()

    def forward(self, x):
      # 第一个线性层
      x = self.fc1(x)
      # 激活函数
      x = self.relu(x)
      # 第二个线性层
      x = self.fc2(x)
      return x
四、Transformer 架构的组件构成

4.1 编码器(Encoder)

4.1.1 编码器的布局

编码器是 Transformer 架构的一部门,它由多个相同的编码器层(Encoder Layer)堆叠而成。每个编码器层包含两个子层:多头留意力子层和前馈神经网络子层。
4.1.2 编码器层的实现

以下是编码器层的 Python 代码实现:
python
import torch
import torch.nn as nn

# 定义编码器层类
class EncoderLayer(nn.Module):
    def __init__(self, d_model, num_heads, d_ff, dropout):
      super(EncoderLayer, self).__init__()
      # 定义多头注意力层
      self.self_attn = MultiHeadAttention(d_model, num_heads)
      # 定义前馈神经网络层
      self.feed_forward = PositionwiseFeedForward(d_model, d_ff)
      # 定义第一个层归一化层
      self.norm1 = nn.LayerNorm(d_model)
      # 定义第二个层归一化层
      self.norm2 = nn.LayerNorm(d_model)
      # 定义 dropout 层
      self.dropout = nn.Dropout(dropout)

    def forward(self, x, mask):
      # 多头注意力子层
      attn_output, _ = self.self_attn(x, x, x, mask)
      # 残差连接和层归一化
      x = self.norm1(x + self.dropout(attn_output))

      # 前馈神经网络子层
      ff_output = self.feed_forward(x)
      # 残差连接和层归一化
      x = self.norm2(x + self.dropout(ff_output))

      return x
4.1.3 编码器的实现

以下是编码器的 Python 代码实现:
python
import torch
import torch.nn as nn

# 定义编码器类
class Encoder(nn.Module):
    def __init__(self, num_layers, d_model, num_heads, d_ff, input_vocab_size, maximum_position_encoding, dropout):
      super(Encoder, self).__init__()
      # 模型的维度
      self.d_model = d_model
      # 编码器层的数量
      self.num_layers = num_layers

      # 定义词嵌入层
      self.embedding = nn.Embedding(input_vocab_size, d_model)
      # 定义位置编码层
      self.pos_encoding = PositionalEncoding(d_model, maximum_position_encoding)

      # 定义编码器层列表
      self.enc_layers = nn.ModuleList()
      # 定义 dropout 层
      self.dropout = nn.Dropout(dropout)

    def forward(self, x, mask):
      # 词嵌入
      x = self.embedding(x)
      # 缩放词嵌入
      x *= torch.sqrt(torch.tensor(self.d_model, dtype=torch.float32))
      # 添加位置编码
      x = self.pos_encoding(x)
      # 应用 dropout
      x = self.dropout(x)

      # 依次通过每个编码器层
      for i in range(self.num_layers):
            x = self.enc_layers(x, mask)

      return x
4.2 解码器(Decoder)

4.2.1 解码器的布局

解码器是 Transformer 架构的另一部门,它也由多个相同的解码器层(Decoder Layer)堆叠而成。每个解码器层包含三个子层:多头自留意力子层、编码器 - 解码器留意力子层和前馈神经网络子层。
4.2.2 解码器层的实现

以下是解码器层的 Python 代码实现:
python
import torch
import torch.nn as nn

# 定义解码器层类
class DecoderLayer(nn.Module):
    def __init__(self, d_model, num_heads, d_ff, dropout):
      super(DecoderLayer, self).__init__()
      # 定义多头自注意力层
      self.self_attn = MultiHeadAttention(d_model, num_heads)
      # 定义编码器 - 解码器注意力层
      self.enc_dec_attn = MultiHeadAttention(d_model, num_heads)
      # 定义前馈神经网络层
      self.feed_forward = PositionwiseFeedForward(d_model, d_ff)
      # 定义第一个层归一化层
      self.norm1 = nn.LayerNorm(d_model)
      # 定义第二个层归一化层
      self.norm2 = nn.LayerNorm(d_model)
      # 定义第三个层归一化层
      self.norm3 = nn.LayerNorm(d_model)
      # 定义 dropout 层
      self.dropout = nn.Dropout(dropout)

    def forward(self, x, enc_output, src_mask, tgt_mask):
      # 多头自注意力子层
      attn_output1, _ = self.self_attn(x, x, x, tgt_mask)
      # 残差连接和层归一化
      x = self.norm1(x + self.dropout(attn_output1))

      # 编码器 - 解码器注意力子层
      attn_output2, _ = self.enc_dec_attn(x, enc_output, enc_output, src_mask)
      # 残差连接和层归一化
      x = self.norm2(x + self.dropout(attn_output2))

      # 前馈神经网络子层
      ff_output = self.feed_forward(x)
      # 残差连接和层归一化
      x = self.norm3(x + self.dropout(ff_output))

      return x
4.2.3 解码器的实现

以下是解码器的 Python 代码实现:
python
import torch
import torch.nn as nn

# 定义解码器类
class Decoder(nn.Module):
    def __init__(self, num_layers, d_model, num_heads, d_ff, target_vocab_size, maximum_position_encoding, dropout):
      super(Decoder, self).__init__()
      # 模型的维度
      self.d_model = d_model
      # 解码器层的数量
      self.num_layers = num_layers

      # 定义词嵌入层
      self.embedding = nn.Embedding(target_vocab_size, d_model)
      # 定义位置编码层
      self.pos_encoding = PositionalEncoding(d_model, maximum_position_encoding)

      # 定义解码器层列表
      self.dec_layers = nn.ModuleList()
      # 定义 dropout 层
      self.dropout = nn.Dropout(dropout)

    def forward(self, x, enc_output, src_mask, tgt_mask):
      # 词嵌入
      x = self.embedding(x)
      # 缩放词嵌入
      x *= torch.sqrt(torch.tensor(self.d_model, dtype=torch.float32))
      # 添加位置编码
      x = self.pos_encoding(x)
      # 应用 dropout
      x = self.dropout(x)

      # 依次通过每个解码器层
      for i in range(self.num_layers):
            x = self.dec_layers(x, enc_output, src_mask, tgt_mask)

      return x
4.3 全连接层(Final Linear Layer)

全连接层是 Transformer 架构的最后一层,它将解码器的输出映射到目的词汇表的大小,用于猜测下一个词的概率分布。
以下是全连接层的 Python 代码实现:
python
import torch
import torch.nn as nn

# 定义全连接层类
class FinalLinearLayer(nn.Module):
    def __init__(self, d_model, target_vocab_size):
      super(FinalLinearLayer, self).__init__()
      # 定义线性层
      self.linear = nn.Linear(d_model, target_vocab_size)

    def forward(self, x):
      # 线性变换
      x = self.linear(x)
      return x
4.4 Transformer 模子的团体实现

以下是 Transformer 模子的团体 Python 代码实现:
python
import torch
import torch.nn as nn

# 定义 Transformer 模型类
class Transformer(nn.Module):
    def __init__(self, num_layers, d_model, num_heads, d_ff, input_vocab_size,
               target_vocab_size, pe_input, pe_target, dropout):
      super(Transformer, self).__init__()
      # 定义编码器
      self.encoder = Encoder(num_layers, d_model, num_heads, d_ff, input_vocab_size, pe_input, dropout)
      # 定义解码器
      self.decoder = Decoder(num_layers, d_model, num_heads, d_ff, target_vocab_size, pe_target, dropout)
      # 定义全连接层
      self.final_layer = FinalLinearLayer(d_model, target_vocab_size)

    def forward(self, src, tgt, src_mask, tgt_mask):
      # 编码器前向传播
      enc_output = self.encoder(src, src_mask)
      # 解码器前向传播
      dec_output = self.decoder(tgt, enc_output, src_mask, tgt_mask)
      # 全连接层前向传播
      final_output = self.final_layer(dec_output)
      return final_output
五、Transformer 架构的训练与优化

5.1 丧失函数(Loss Function)

在训练 Transformer 模子时,通常使用交织熵丧失函数(Cross-Entropy Loss Function)来衡量模子猜测结果与真实标签之间的差异。
以下是使用 PyTorch 实现的交织熵丧失函数:
python
import torch
import torch.nn as nn

# 定义交叉熵损失函数
criterion = nn.CrossEntropyLoss(ignore_index=0)
5.2 优化器(Optimizer)

在训练 Transformer 模子时,通常使用 Adam 优化器(Adam Optimizer)来更新模子的参数。
以下是使用 PyTorch 实现的 Adam 优化器:
python
import torch.optim as optim

# 定义模型
model = Transformer(num_layers=6, d_model=512, num_heads=8, d_ff=2048,
                  input_vocab_size=10000, target_vocab_size=10000,
                  pe_input=1000, pe_target=1000, dropout=0.1)

# 定义优化器
optimizer = optim.Adam(model.parameters(), lr=0.0001, betas=(0.9, 0.98), eps=1e-9)
5.3 学习率调理器(Learning Rate Scheduler)

为了在训练过程中动态调整学习率,通常使用学习率调理器(Learning Rate Scheduler)。在 Transformer 模子中,常用的学习率调理器是基于热身(Warmup)策略的调理器。
以下是使用 PyTorch 实现的基于热身策略的学习率调理器:
python
import torch.optim as optim
import math

# 定义基于热身策略的学习率调度器类
class WarmupScheduler:
    def __init__(self, optimizer, d_model, warmup_steps):
      # 优化器
      self.optimizer = optimizer
      # 模型的维度
      self.d_model = d_model
      # 热身步数
      self.warmup_steps = warmup_steps
      # 当前步数
      self.step_num = 0

    def step(self):
      # 增加当前步数
      self.step_num += 1
      # 计算学习率
      lr = (self.d_model ** (-0.5)) * min(self.step_num ** (-0.5), self.step_num * (self.warmup_steps ** (-1.5)))
      # 更新优化器的学习率
      for param_group in self.optimizer.param_groups:
            param_group['lr'] = lr
      # 执行优化器的 step 方法
      self.optimizer.step()

    def zero_grad(self):
      # 执行优化器的 zero_grad 方法
      self.optimizer.zero_grad()
5.4 训练循环(Training Loop)

以下是一个简朴的 Transformer 模子训练循环的 Python 代码实现:
python
# 定义训练参数
num_epochs = 10
warmup_steps = 4000

# 定义学习率调度器
scheduler = WarmupScheduler(optimizer, d_model=512, warmup_steps=warmup_steps)

# 训练循环
for epoch in range(num_epochs):
    total_loss = 0
    for src, tgt in dataloader:
      # 生成源序列和目标序列的掩码
      src_mask = create_src_mask(src)
      tgt_mask = create_tgt_mask(tgt)

      # 前向传播
      output = model(src, tgt[:, :-1], src_mask, tgt_mask[:, :-1, :-1])
      # 计算损失
      loss = criterion(output.contiguous().view(-1, output.size(-1)), tgt[:, 1:].contiguous().view(-1))

      # 反向传播
      scheduler.zero_grad()
      loss.backward()
      # 更新参数
      scheduler.step()

      total_loss += loss.item()

    print(f'Epoch {epoch + 1}, Loss: {total_loss / len(dataloader)}')
六、Transformer 架构的应用案例

6.1 呆板翻译(Machine Translation)

Transformer 架构在呆板翻译任务中取得了巨大的成功。通过将源语言序列输入到编码器中,解码器根据编码器的输出生成目的语言序列。
以下是一个简朴的呆板翻译示例代码:
python
# 加载预训练的 Transformer 模型
model = Transformer(num_layers=6, d_model=512, num_heads=8, d_ff=2048,
                  input_vocab_size=10000, target_vocab_size=10000,
                  pe_input=1000, pe_target=1000, dropout=0.1)
model.load_state_dict(torch.load('transformer_model.pth'))
model.eval()

# 输入源语言序列
src = torch.tensor([])
# 生成源序列的掩码
src_mask = create_src_mask(src)

# 初始化目标序列
tgt = torch.tensor([])

# 生成翻译结果
for i in range(10):
    # 生成目标序列的掩码
    tgt_mask = create_tgt_mask(tgt)
    # 前向传播
    output = model(src, tgt, src_mask, tgt_mask)
    # 获取预测的下一个词
    next_word = torch.argmax(output[:, -1, :], dim=-1).unsqueeze(1)
    # 将预测的下一个词添加到目标序列中
    tgt = torch.cat(, dim=1)

print(tgt)
6.2 文本生成(Text Generation)

Transformer 架构也广泛应用于文本生成任务,如故事生成、诗歌生成等。通过不断地猜测下一个词,生成完备的文本序列。
以下是一个简朴的文本生成示例代码:
python
# 加载预训练的 Transformer 模型
model = Transformer(num_layers=6, d_model=512, num_heads=8, d_ff=2048,
                  input_vocab_size=10000, target_vocab_size=10000,
                  pe_input=1000, pe_target=1000, dropout=0.1)
model.load_state_dict(torch.load('transformer_model.pth'))
model.eval()

# 输入起始文本
start_text = torch.tensor([])
# 生成起始文本的掩码
src_mask = create_src_mask(start_text)

# 初始化目标序列
tgt = start_text

# 生成文本序列
for i in range(20):
    # 生成目标序列的掩码
    tgt_mask = create_tgt_mask(tgt)
    # 前向传播
    output = model(start_text, tgt, src_mask, tgt_mask)
    # 获取预测的下一个词
    next_word = torch.argmax(output[:, -1, :], dim=-1).unsqueeze(1)
    # 将预测的下一个词添加到目标序列中
    tgt = torch.cat(, dim=1)

print(tgt)
七、总结与展望

7.1 总结

本文深入分析了 Transformer 架构,从其核心原理、组件构成到源码实现进行了全面的分析。Transformer 架构以其并行盘算能力、长间隔依赖建模能力和灵活性,成为了现代 AI 大模子的核心基础。通过自留意力机制和位置编码,Transformer 架构能够有效地捕捉序列中的上下文信息,从而在天然语言处置处罚、盘算机视觉等多个范畴取得了优异的性能。
在源码实现方面,我们具体先容了缩放点积留意力、多头留意力、位置编码、前馈神经网络、编码器、解码器、全连接层等组件的实现细节,并给出了完备的 Transformer 模子的代码实现。同时,我们还先容了 Transformer 模子的训练与优化方法,包括丧失函数、优化器、学习率调理器和训练循环等。
7.2 展望

只管 Transformer 架构已经取得了巨大的成功,但仍然存在一些挑战和改进的空间:


[*] 盘算资源需求:Transformer 架构的盘算复杂度较高,必要大量的盘算资源和内存。未来的研究可以探索如何优化 Transformer 架构的盘算效率,减少盘算资源的需求。
[*] 可表明性:Transformer 架构是一种黑盒模子,其决策过程难以表明。未来的研究可以致力于进步 Transformer 模子的可表明性,使其更加透明和可信。
[*] 长序列处置处罚能力:虽然 Transformer 架构在处置处罚长序列方面具有一定的优势,但在处置处罚极长序列时仍然存在挑战。未来的研究可以探索如何进一步进步 Transformer 架构的长序列处置处罚能力。
随着人工智能技术的不断发展,Transformer 架构有望在更多的范畴得到应用和拓展。例如,在医疗范畴,Transformer 架构可以用于医学图像分析、疾病猜测等;在金融范畴,Transformer 架构可以用于风险评估、股票猜测等。相信在未来,Transformer 架构将为人工智能的发展带来更多的突破和创新。
以上内容具体先容了 Transformer 架构的原理、实现和应用,希望能够资助读者深入理解 Transformer 架构,并为进一步的研究和应用提供参考。在现实应用中,读者可以根据具体需求对代码进行调整和优化,以实现更好的性能。同时,读者也可以关注 Transformer 架构的最新研究进展,不断探索其在不同范畴的应用潜力。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: AI 大模子之 Transformer 架构深入分析