logo
0
0
WeChat Login
优化 README 文档结构

Transformer 翻译模型

PyTorch Python License

一个基于 PyTorch 实现的 Transformer 模型,用于英语到意大利语的神经机器翻译任务。


目录

项目简介

本项目实现了经典的 Transformer 架构(来自论文 Attention Is All You Need),并应用于英意翻译任务。项目包含了完整的数据处理流程、模型训练脚本和预训练模型权重。

项目结构

transformer-with-pytorch/ ├── config.py # 配置文件,定义训练参数和模型超参数 ├── dataset.py # 数据集处理类,定义双语数据集的预处理逻辑 ├── model.py # Transformer 模型的完整实现 ├── train.py # 训练脚本,包含数据加载、模型训练和验证逻辑 ├── tokenizer_en.json # 英语分词器配置文件 ├── tokenizer_it.json # 意大利语分词器配置文件 ├── requirements.txt # 项目依赖配置文件 ├── opus_books_weights/ # 训练好的模型权重文件目录 └── README.md # 项目说明文档

功能模块

模型架构 (model.py)

组件说明
InputEmbeddings词嵌入层,将词汇索引转换为向量表示
PositionalEncoding位置编码层,为序列添加位置信息
MultiHeadAttentionBlock多头自注意力机制
FeedForwardBlock前馈神经网络层
Encoder/Decoder编码器和解码器层
ProjectionLayer输出投影层,将模型输出映射到词表空间
Transformer完整的 Transformer 模型架构

数据处理 (dataset.py)

  • BilingualDataset: 自定义数据集类,处理双语翻译数据
  • 对源语言和目标语言进行分词和编码
  • 添加特殊标记([SOS], [EOS], [PAD]
  • 生成源掩码和目标掩码

训练配置 (config.py)

参数说明
batch_size8批次大小
num_epochs20训练轮次
lr10⁻⁴学习率
seq_len350序列最大长度
d_model512模型维度
datasourceopus_books数据源(英-意)

训练流程 (train.py)

  • 从 Hugging Face 加载 opus_books 数据集
  • 构建英语和意大利语的 BPE 分词器
  • 将数据集分割为训练集 (90%) 和验证集 (10%)
  • 使用 DataLoader 加载批次数据
  • 实现完整的训练循环:前向传播、损失计算、反向传播
  • 使用 TensorBoard 记录训练过程
  • 定期保存模型权重到 opus_books_weights/

快速开始

环境要求

  • Python 3.8+
  • PyTorch 2.0+
  • CUDA(可选,用于 GPU 加速)

安装依赖

pip install -r requirements.txt

运行训练

python train.py

训练过程中,TensorBoard 日志将保存至 runs/ 目录,可通过以下命令查看:

tensorboard --logdir runs

训练配置

参数说明
batch_size8批次大小
num_epochs20训练轮次
lr1e-4学习率
seq_len350序列最大长度
d_model512模型维度
datasourceopus_books数据源(英-意)

模型特点

  • 标准的 Transformer 架构实现
  • 支持自注意力和交叉注意力机制
  • 包含残差连接和层归一化
  • 使用标签平滑和 dropout 防止过拟合
  • 支持因果掩码以实现自回归解码
  • BPE 分词,有效处理词汇表

数据集

使用 Hugging Face 的 opus_books 数据集,这是一个平行语料库,包含英语到意大利语的翻译对。数据经过预处理:

  • 统一序列长度为 350
  • 添加 [SOS](序列开始)、[EOS](序列结束)、[PAD](填充)特殊标记
  • 90% 用于训练,10% 用于验证

依赖库

用途
PyTorch深度学习框架
datasets数据集加载
tokenizersBPE 分词器
TensorBoard训练可视化
tqdm进度条显示
numpy数值计算
pathlib路径处理

参考

许可证

MIT License