Skip to content

Asianfleet/transformer-implementation

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Transformer 实现

这是一个基于 PyTorch 的 Transformer 模型实现,包含完整的编码器-解码器架构。

项目结构

transformer/
├── attention.py      # 多头注意力机制实现
├── embedding.py      # 词嵌入和位置编码
├── ffn.py           # 前馈神经网络
├── layer.py         # 编码器和解码器层
├── norm.py          # 层归一化
├── transformer.py   # 完整的 Transformer 模型
├── train_minimal.py # 最小训练示例
├── requirements.txt # 依赖包
└── README.md        # 说明文档

安装依赖

pip install -r requirements.txt

快速开始

训练最小模型

运行以下命令来训练一个最小的 Transformer 模型:

python train_minimal.py

这个脚本会:

  1. 创建一个小的 Transformer 模型(约 1.5M 参数)
  2. 使用随机生成的模拟数据进行训练
  3. 在训练完成后保存模型权重

模型配置

train_minimal.py 中可以调整以下超参数:

  • VOCAB_SIZE: 词汇表大小(默认:1000)
  • D_MODEL: 模型维度(默认:128)
  • N_HEADS: 注意力头数量(默认:4)
  • N_ENCODER: 编码器层数(默认:2)
  • N_DECODER: 解码器层数(默认:2)
  • FFN_HIDDEN: 前馈网络隐藏层维度(默认:512)
  • BATCH_SIZE: 批次大小(默认:32)
  • NUM_EPOCHS: 训练轮数(默认:10)

模块说明

1. Transformer (transformer.py)

完整的 Transformer 模型,包含编码器和解码器。

2. 注意力机制 (attention.py)

  • MultiheadAttention: 多头注意力机制
  • SelfAttention: 自注意力计算

3. 嵌入层 (embedding.py)

  • TokenEmbedding: 词嵌入
  • PositionalEmbedding: 位置编码
  • TransformerEmbedding: 完整的 Transformer 嵌入层

4. 前馈网络 (ffn.py)

  • PositionwiseFeedForward: 位置感知前馈网络

5. 层归一化 (norm.py)

  • LayerNorm: 层归一化实现

6. 编码器/解码器层 (layer.py)

  • EncoderLayer: Transformer 编码器层
  • DecoderLayer: Transformer 解码器层
  • Encoder: 完整的编码器
  • Decoder: 完整的解码器

使用真实数据

要使用真实数据训练,你需要:

  1. 准备源语言和目标语言的数据集
  2. 构建词汇表
  3. 修改数据加载器
  4. 调整超参数以适应你的任务

注意事项

  • 当前实现使用模拟数据进行演示
  • 实际应用中需要处理真实的序列到序列任务
  • 可以根据需要调整模型架构和超参数
  • 确保有足够的 GPU 内存来训练更大的模型

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages