一个基于 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 # 项目说明文档
| 组件 | 说明 |
|---|---|
InputEmbeddings | 词嵌入层,将词汇索引转换为向量表示 |
PositionalEncoding | 位置编码层,为序列添加位置信息 |
MultiHeadAttentionBlock | 多头自注意力机制 |
FeedForwardBlock | 前馈神经网络层 |
Encoder/Decoder | 编码器和解码器层 |
ProjectionLayer | 输出投影层,将模型输出映射到词表空间 |
Transformer | 完整的 Transformer 模型架构 |
[SOS], [EOS], [PAD])| 参数 | 值 | 说明 |
|---|---|---|
batch_size | 8 | 批次大小 |
num_epochs | 20 | 训练轮次 |
lr | 10⁻⁴ | 学习率 |
seq_len | 350 | 序列最大长度 |
d_model | 512 | 模型维度 |
datasource | opus_books | 数据源(英-意) |
opus_books 数据集opus_books_weights/pip install -r requirements.txt
python train.py
训练过程中,TensorBoard 日志将保存至 runs/ 目录,可通过以下命令查看:
tensorboard --logdir runs
| 参数 | 值 | 说明 |
|---|---|---|
batch_size | 8 | 批次大小 |
num_epochs | 20 | 训练轮次 |
lr | 1e-4 | 学习率 |
seq_len | 350 | 序列最大长度 |
d_model | 512 | 模型维度 |
datasource | opus_books | 数据源(英-意) |
使用 Hugging Face 的 opus_books 数据集,这是一个平行语料库,包含英语到意大利语的翻译对。数据经过预处理:
[SOS](序列开始)、[EOS](序列结束)、[PAD](填充)特殊标记| 库 | 用途 |
|---|---|
| PyTorch | 深度学习框架 |
| datasets | 数据集加载 |
| tokenizers | BPE 分词器 |
| TensorBoard | 训练可视化 |
| tqdm | 进度条显示 |
| numpy | 数值计算 |
| pathlib | 路径处理 |
MIT License