使用 Keras 和 tensorflow 实现的Transformer模型
文件列表(压缩包大小 1.40M)
免费
概述
使用 keras+tensorflow 实现论文"Attention Is All You Need"中的模型Transformer。
examples/data_process.py
这将会把原始分离的英语句子和德语句子进行组装,生成下面的文件:
数据来源:WMT'16 Multimodal Translation: Multi30k (de-en) (http://www.statmt.org/wmt16/multimodal-task.html).
examples/tokenizer_test.py 这会生成以下的字典文件:
examples/train_test.py 训练参数和配置可在文件 train_test.py 中找到, 默认模型配置如下:
{
"src_vocab_size": 3321,
"tgt_vocab_size": 3638,
"model_dim": 512,
"src_max_len": 70,
"tgt_max_len": 70,
"num_layers": 2,
"num_heads": 8,
"ffn_dim": 512,
"dropout": 0.1
}
可以使用以下方式进行解码: 1.beam_search_text_decode 2.decode_text_fast 3.decode_text 详情见: examples/decode_test.py.
以下为使用SGDR作为学习率变化策略,迭代32次的训练效果图: 可以发现迭代30次后,验证集精度达到了70%,由于数据集很小,通过缩小模型规模,应该能得到更高的精确度(如,设置model_dim=256)。
1.直接解码decode_text_fast 2.束搜索beam_search_text_decode 源句子如下: `"Two women wearing red and a man coming out of a port @-@ a @-@ potty ." 符号@-@表示这是一个连接左右两词的连接符,即port @-@ a @-@ potty是一个词port-a-potty。这么做只是为了方便训练。
目标句子如下: "Zwei Frauen in Rot und ein Mann , der aus einer transportablen Toilette kommt ." 以束宽3经束搜索后的结果如下:
性能测试时模型使用的配置与默认配置相同
数据集包括 29000 个训练样例, 1014 个验证样例。
注意:最大耗时一般只发生在模型未训练时,即使用一个完全未训练的模型进行解码。
example/mask_test.py
example/position_encoding_test.py
1.https://github.com/Lsdefine/attention-is-all-you-need-keras 2.Transformer 模型的 PyTorch 实现 3.https://www.jiqizhixin.com/articles/Synced-github-implement-project-machine-translation-by-transformer 4.Setting the learning rate of your neural network
如果遇到文件不能下载或其他产品问题,请添加管理员微信:ligongku001,并备注:产品反馈
评论(0)