02 Transformer算法
1. Transformer 整体架构经典 Transformer 采用 Encoder–Decoder 架构。Encoder 负责理解输入序列,Decoder 则结合已经生成的内容与 Encoder 输出,逐个预测后续 Token。 整个模型的数据流可以概括为: 输入 Token 先经过 Embedding,从离散 ID 转换为连续向量。 位置编码为向量注入 Token 的先后顺序。 Encoder 使用多头自注意力提取输入序列的上下文表示。 Decoder 先通过带掩码的自注意力读取已生成内容,再通过交叉注意力读取 Encoder 输出。 Decoder 的结果经过线性层,得到目标词表中每个 Token 的预测分数。 后文统一使用以下符号: 符号 含义 $B$ Batch Size,批大小 $S$ 源序列长度,即 Encoder 的 Token 数量 $T$ 目标序列长度,即 Decoder 的 Token 数量 $d_{\text{model}}$ 每个 Token 的特征维度 $h$ 注意力头的数量 $d_k$ 每个注意力头中 Que...
从数据生成到模型保存的完整二分类流程
本文通过一个简单的二维二分类任务,记录使用 PyTorch 完成数据准备、模型创建、训练、验证和模型保存的完整流程。 1. 基础流程1.1 数据准备首先随机生成两组 Tensor 数据:将第一组数据的中心移动到 (-1, -1),将第二组数据的中心移动到 (1, 1)。随后使用 torch.randperm() 打乱样本顺序,并通过 TensorDataset 和 DataLoader 将数据封装成批次,供后续训练和验证使用。 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455# 1. 准备数据class_0 = torch.randn(500,2) * 0.6class_0 += torch.tensor([-1.0,-1.0])class_1 = torch.randn(500,2) * 0.6class_1 += torch.tensor([1.0,1.0])feature = torch.cat( [class_0,...