PyTorch 实战:从 0 开始搭建 Transformer

  1. 导入必要的库

python

import math
import torch
import torch.nn as nn
from LabmL_helpers.module import Module
from labml_n.utils import clone_module_List
from typing import Optional, List
from torch.utils.data import DataLoader, TensorDataset
from torch import optim
import torch.nn.functional as F
  1. Transformer 模型概述
    Transformer 是一种序列到序列的模型,通过自注意力机制并行处理整个序列,能同时考虑序列中的所有元素,并学习上下文之间的关系。其架构包括编码器和解码器部分,每部分都由多个相同的层组成,这些层包含自注意力机制、前馈神经网络,以及归一化和 Dropout 步骤。
  2. 核心公式
    • 自注意力计算:Attention(Q,K,V)=softmax(dk​​QKT​)V,其中,Q、K、V分别是查询(Query)、键(Key)和值(Value)矩阵,dk​是键的维度。
    • 多头注意力:将输入分割为多个头,分别计算注意力,然后将结果拼接起来。
    • 位置编码:由于 Transformer 不使用循环结构,因此引入位置编码来保留序列中的位置信息。
  3. 自注意力机制
    • 核心原理:计算句子在编码过程中每个位置上的注意力权重,然后以权重和的方式来计算整个句子的隐含向量表示。公式中,首先将 query 与 key 的转置做点积,然后将结果除以dk​​ ,再进行 softmax 计算,最后将结果与 value 做矩阵乘法得到 output。除以dk​​是为了防止QKT过大导致 softmax 计算溢出,且可使QKT结果满足均值为 0,方差 1 的分布。QKT计算本质上是余弦相似度,可表示两个向量在方向上的相似度。
    • 实现

python

import numpy as np
from math import sqrt
import torch
from torch import nn


class Self_Attention(nn.Module):
    # input : batch_size * seq_len * input_dim
    # q : batch_size * input_dim * dim_k
    #
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值