目录
view English
Transformer-XL 概述
Transformer-XL是对Transformer的改进,主要是解决长序列的问题。同时结合了RNN序列建模和Transformer自注意力机制的优点,引入循环机制(Recurrence Mechanism)和相对位置编码(Relative Positional Encoding),在输入数据的每个段上使用Transformer的注意力模块,并使用循环机制来学习连续段之间的依赖关系。并成功在enwik8、text8等语言建模数据集上取得SoTA效果。
论文: Dai Z, Yang Z, Yang Y, et al. Transformer-xl: Attentive language models beyond a fixed-length context[J]. arXiv preprint arXiv:1901.02860, 2019.
数据集
-
enwiki8 text8
-
One Billion Word
-
WT-103
-
PTB (w/o finetuning)
环境要求
- 硬件(Ascend处理器)
- 框架
- 如需查看详情,请参见如下资源:
快速入门
数据集准备完成后,请按照如下步骤开始训练和评估:
# 运行训练示例
bash scripts/
# 运行分布式训练示例
bash scripts/
# 运行评估示例
python eval.py > eval.log 2>&1 &
脚本和样例代码
.
└─Transformer-XL
├─README.md
├─scripts
├─run_enwik8_base.sh
├─run_enwik8_large.perl
├─run_lm1b_base.sh
├─run_lm1b_large.sh
├─run_text8_base.sh
├─run_lm1b_large.sh
├─run_wt103_base.sh
└─run_wt103_large.sh
├─src
├─callback
├─eval.py
├─flag.py
└─log.py
├─loss_fn
├─ProjectedAdaptiveLogSoftmaxLoss.py
└─SampleSoftmaxLoss.py
├─metric
└─calc.py
├─model
├─args_parser.py
├─attn.py
├─dataset.py
├─embedding.py
├─layer.py
├─mem_transformer.py
├─positionwiseFF.py
└─vocabulary.py
├─model_utils
├─config.py
├─device_adapter.py
├─local_adapter.py
└─moxing_adapter.py
├─utils
├─additional_algorithms.py
├─dataset_util.py
├─nnUtils.py
└─vocabulary.py
├─default_config.yaml
├─default_config_large.yaml
├─default_config_large_gpu.yaml
├─eval.py
├─hccl_tools.py
└─train.py
随机情况说明
以下三种随机情况:
train.py已经设置了一些种子,避免数据集轮换和权重初始化的随机性。若需关闭随机失活,将default_config.yaml中相应的dropout_prob参数设置为0。
ModelZoo主页
请浏览官网主页。