仓库简介#
TransformerTranslation 是论文 Attention Is All You Need 的 PyTorch 实现,聚焦 德语 → 英语 (EN→DE) 文本翻译任务。基于 Multi30K 经典数据集,从零搭建完整的 Transformer 架构(Multi-Head Attention、Positional Encoding、Encoder/Decoder、点式前馈网络、自定义学习率调度),并配套训练、推理、BLEU 评测全流程。
仓库包含两部分配套:
- 代码:在
train.py中完成 Multi30K 数据预处理、Transformer 训练与学习率调度;在translate.py中加载模型对新句子做 Beam Search 推理;提供 BLEU 评测脚本在 val / test_2016_flickr 上对比翻译质量。 - 教程:配套「图解 Transformer 入门教程」系列 9 讲,从 Multi-Head Attention 动机与公式、位置编码原理,到 PyTorch 完整实现、翻译模型实战、文本分类与对联生成扩展,全部基于 PyTorch 与 Transformer 教程与可视化代码。
在学习使用本项目之前建议先掌握 Transformer 整体架构,相关内容可参考 「图解 Transformer 入门教程」 系列教程。
适用人群#
- 想深入理解 Transformer 架构(Multi-Head Attention、Positional Encoding、Encoder/Decoder)的研究 / 工程人员;
- 计划基于 PyTorch 从零实现机器翻译、Seq2Seq 任务的开发者;
- 想在 Multi30K、WMT 等公开数据集上训练与评估翻译模型的 NLP 实战学习者;
- 教学场景中需要"论文 + 代码 + 数据集 + 评测"完整闭环的讲师与学生。
内容结构#
train.py— 训练入口:加载 Multi30K 数据集 → spaCy 分词 → 训练 → 自定义学习率调度 → 周期性保存 checkpoint;translate.py— 推理入口:加载模型,对新德语句子做 Beam Search / 贪心解码并输出英语译文与参考译文的对比;config/config.py— 训练与模型超参配置(batch size、head 数、层数等),可按需修改或保持默认;data/— 数据与依赖资源:train.de/train.en/val.de/val.en/test_2016_flickr.de/test_2016_flickr.en:Multi30K 数据集官方划分;de_core_news_sm-3.0.0.tar.gz/en_core_web_sm-3.0.0.tar.gz:spaCy 3.0.0 德语 / 英语分词模型离线包(需手动pip install);
model/— Transformer 各核心模块的 PyTorch 实现:MyTransformer.py:Multi-Head Attention、Scaled Dot-Product Attention、Encoder/Decoder Layer 完整实现;Embedding.py:Token Embedding + Positional Encoding;TranslationModel.py:Transformer 端到端翻译模型组装;CustomScheduleLearningRate.py:论文中的 Noam 自定义学习率调度器;
utils/data_helpers.py— 数据加载、分词、Batch 构造、Mask 生成;utils/log_helper.py— 训练日志与可视化辅助;test/— 单元测试:test_Config.py/test_Embedding.py/test_MyTransformer.py/test_TranslationModel.py/test_LoadEnglishGermanDataset.py;imgs/— README 中训练过程 / 学习率曲线 / BLEU 评测结果图;requirements.txt— Python 依赖(PyTorch 1.5.0、torchtext 0.6.0、spaCy 等)。
配套章节#
以下 6 讲系统讲解 Transformer 整体架构与德英翻译任务实战,覆盖 Multi-Head Attention 动机、位置编码原理、PyTorch 从零实现到翻译模型训练 / 推理 / BLEU 评测,均配套 PyTorch Python 实现与可视化代码,是 Transformer 与机器翻译入门到实战的完整教程。
| 章节 | 重点小节 |
|---|---|
| 第 1 讲 Multi-Head Attention | Multi-Head Attention 图解教程:从动机到 Q/K/V 与多头分割原理 |
| 第 2 讲 位置编码 | Transformer 位置编码教程:图解正弦 Positional Encoding 与编解码过程 |
| 第 3 讲 Attention 代码实现 | Multi-Head Attention 代码实现教程:基于 PyTorch 手写多头注意力与掩码 |
| 第 4 讲 Transformer 完整实现 | Transformer PyTorch 完整实现教程:从 Token Embedding 到 Encoder/Decoder |
| 第 5 讲 翻译模型实战 | Transformer 翻译模型实战教程:Multi30K EN→DE 数据预处理与 Seq2Seq 训练 |
| 第 6 讲 文本分类扩展 | Transformer 文本分类实战教程:基于 Encoder 复刻 BERT 的 AG_News 分类实现 |
使用方式#
1. 环境准备#
- Python 3.x
- PyTorch 1.5.0
- torchtext 0.6.0
- spaCy 离线模型(从
data/目录安装):
pip install de_core_news_sm-3.0.0.tar.gz
pip install en_core_web_sm-3.0.0.tar.gz2. 训练#
直接执行 train.py 即可启动训练(可按需修改 config/config.py 中的超参):
git clone https://github.com/mlwithme/TransformerTranslation.git
cd TransformerTranslation
pip install -r requirements.txt
python train.py训练过程示例:
Epoch: 2, Train loss: 5.685, Train acc: 0.240947
Epoch: 2, Train loss: 5.668, Train acc: 0.241493
...学习率变化(Noam 调度,warmup 后逐步衰减):

3. 推理(inference)#
训练完成后运行 translate.py 即可对测试集做推理:
python translate.py翻译示例:
德语:Eine Gruppe von Menschen steht vor einem Iglu.
翻译:A group of people standing in fraon of an igloo .
英语:A group of people are facing an igloo.
=========
德语:Ein Mann in einem blauen Hemd steht auf einer Leiter und putzt ein Fenster.
翻译:A man in a blue shirt is standing on a ladder cleaning a window.
英语:A man in a blue shirt is standing on a ladder cleaning a window.