这是一个基于 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这个脚本会:
- 创建一个小的 Transformer 模型(约 1.5M 参数)
- 使用随机生成的模拟数据进行训练
- 在训练完成后保存模型权重
在 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)
完整的 Transformer 模型,包含编码器和解码器。
MultiheadAttention: 多头注意力机制SelfAttention: 自注意力计算
TokenEmbedding: 词嵌入PositionalEmbedding: 位置编码TransformerEmbedding: 完整的 Transformer 嵌入层
PositionwiseFeedForward: 位置感知前馈网络
LayerNorm: 层归一化实现
EncoderLayer: Transformer 编码器层DecoderLayer: Transformer 解码器层Encoder: 完整的编码器Decoder: 完整的解码器
要使用真实数据训练,你需要:
- 准备源语言和目标语言的数据集
- 构建词汇表
- 修改数据加载器
- 调整超参数以适应你的任务
- 当前实现使用模拟数据进行演示
- 实际应用中需要处理真实的序列到序列任务
- 可以根据需要调整模型架构和超参数
- 确保有足够的 GPU 内存来训练更大的模型