新建 Microsoft PowerPoint 演示文稿 (2).jpg
这个算是在课程学习之外的探索,不过希望能尽快用到项目实践中。在文章里会引用较多的博客,文末会进行reference。
搜索Transformer机制,会发现高分结果基本上都源于一篇论文Jay Alammar的《The Illustrated Transformer》(图解Transformer),提到最多的Attention是Google的《Attention Is All You Need》。
- 对于Transformer的运行机制了解即可,所以会基于这篇论文来学习Transformer,结合《Sklearn+Tensorflow》中Attention注意力机制一章完成基本的概念学习;
- 找一个基于Transformer的项目练手
距离上次更新已经过去两天了,放弃之前那个Transformer实现,我们换一个项目吼不吼啊(https://github.com/Kyubyong/transformer)。
这周快要累死了,上课上到吐,还被教授公开处刑……
之前那个实现阅读起来有点太麻烦,就弃了。
ok现在开始看看这个代码是怎么实现的。
5.代码实现
超参数
先来看最简单的代码超参数设定。
prepro部分参数,词汇数目
parser.add_argument('--vocab_size', default=32000, type=int)
train部分参数
files,应该是文件地址
parser.add_argument('--train1', default='iwslt2016/segmented/train.de.bpe', help="german training segmented data")
parser.add_argument('--train2', default='iwslt2016/segmented/train.en.bpe', help="english training segmented data")
parser.add_argument('--eval1', default='iwslt2016/segmented/eval.de.bpe', help="german evaluation segmented data")
parser.add_argument('--eval2', default='iwslt2016/segmented/eval.en.bpe', help="english evaluation segmented data")
parser.add_argument('--eval3', default='iwslt2016/prepro/eval.en', help="english evaluation unsegmented data")
vocabulary,词汇保存地址
parser.add_argument('--vocab', default='iwslt2016/segmented/bpe.vocab', help="vocabulary file path")
training scheme 训练部分参数设定
- batch_size,eval_batch_size,
- 学习速率(lr)
- 模型记录地址(warmup_steps)
- 迭代次数(num_epochs)
- 模型评价存储地址
parser.add_argument('--batch_size', default=128, type=int)
parser.add_argument('--eval_batch_size', default=128, type=int)
parser.add_argument('--lr', default=0.003, type=float, hel="learning rate")
parser.add_argument('--warmup_steps', default="log/1", help="log directory")
parser.add_argument('--num_epochs', default="eval/1", help="evaluation dir")
parser.add_argument('--evaldir', default="eval/1", help="evaluation dir")
model 模型部分参数设定
- encoder和decoder的隐藏维度(d_model)
- FF层的隐藏维度(d_ff)
- encoder和decoder的block数(num_blocks)之前提到过,越多的block胸啊过越好
- attention head数(num_heads)这个应该是multi-head attention部分的吧
- 源句最大长度,目标句最大长度(maxlen1和maxlen2)
- dropout_rate
- 标签平滑率label smoothing rate(smoothing)
parser.add_argument('--d_model', default=512, type=int, help="hidden dimension of encoder/decoder")
parser.add_argument('--d_ff', default=2048, type=int, help="hidden dimension of feedforward layer")
parser.add_argument('--num_blocks', default=6, type=int, help="number of encoder/decoder blocks")
parser.add_argument('--num_heads', default=8, type=int, help="number of attention heads")
parser.add_argument('--maxlen1', default=100, type=int, help="maximum length of a source sequence")
parser.add_argument('--maxlen2', default=100, type=int, help="maximum length of a target sequence")
parser.add_argument('--dropout_rate', default=0.3, type=float)
parser.add_argument('--smoothing', default=0.1, type=float, help="label smoothing rate")
test 测试部分
parser.add_argument('--test1', default='iwslt2016/segmented/test.de.bpe', help="german test segmented data")
parser.add_argument('--test2', default='iwslt2016/prepro/test.en', help="english test data")
parser.add_argument('--ckpt', help="checkpoint file path")
parser.add_argument('--test_batch_size', default=128, type=int)
parser.add_argument('--testdir', default="test/1", help="test result dir")











网友评论