添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
阳刚的青蛙  ·  GitHub - ...·  3 月前    · 
逼格高的槟榔  ·  Sexmcc·  12 月前    · 

由于实验评估需要,我想尝试一下在OpenNMT中使用 Transformer ,不过还是遇到了一些问题,这里记录一下:

在之前的实验中,我注意到OpenNMT的Seq2Seq model的performance实际上比不上最简单的PyTorch的Seq2Seq示例代码。觉得很疑惑,稍微搜索后发现,其他网友也提出了类似的问题:

https://github.com/OpenNMT/OpenNMT-py/issues/139

不过似乎这个问题并没有引起足够的重视,OpenNMT的开发者回复说,我们已经实现了SOTA的Transformer模型,所以不需要仔细处理这个issue了(这个态度也是呵呵了,你们可是哈佛的组啊,不应该更严谨认真一点么?)

所以想试试Transformer,按照这里的介绍:

http://opennmt.net/OpenNMT-py/FAQ.html

Transformer对超参很敏感,他们通过以下参数复现了论文的结果:

python  train.py -data /tmp/de2/data -save_model /tmp/extra \
        -layers 6 -rnn_size 512 -word_vec_size 512 -transformer_ff 2048 -heads 8  \
        -encoder_type transformer -decoder_type transformer -position_encoding \
        -train_steps 200000  -max_generator_batches 2 -dropout 0.1 \
        -batch_size 4096 -batch_type tokens -normalization tokens  -accum_count 2 \
        -optim adam -adam_beta2 0.998 -decay_method noam -warmup_steps 8000 -learning_rate 2 \
        -max_grad_norm 0 -param_init 0  -param_init_glorot \
        -label_smoothing 0.1 -valid_steps 10000 -save_checkpoint_steps 10000 \
        -world_size 4 -gpu_ranks 0 1 2 3

由于我目前测试的机子上没有GPU,所以尝试一下去掉最后的参数,结果发现去掉之后,程序很快停止,也没有任何报错或者输出。呵呵,难道不应该考虑没有GPU的情况吗?看来开源项目要做到真正人性,普适,要细心测试和开发的细节还有很多啊。这篇日志就简单吐槽一下。

本文主要讲解了抛弃之前传统的encod er -decod er 模型 必须结合cnn或者rnn的固有模式,只用Attention。希望对您的学习有所帮助。本文来自网络,由火龙果软件刘琛编辑推荐AttentionIsAllYouNeed这篇论文主要介绍了一种新的机器翻译 模型 ,该 模型 开创性的 使用 了很多全新的计算模式和 模型 结构。综合分析了现有的主流的nlp翻译 模型 的即基于CNN的可并行对其文本翻译和基于RNN的LSTM门控长短期记忆时序翻译 模型 ,总结了两个 模型 的优缺点并在此基础上提出了基于自注意力机制的翻译 模型 transform er transform er 模型 没有 使用 CNN和RNN的方法和模块,开创性的将注 通过本文,我们深入探讨了ModuleNotFound Er ror: No module named ‘ transform er s’错误的原因、 解决 方案以及相关的Python包和模块知识。我们提供了安装 transform er s库的方法,并解释了如何管理和 使用 Python的包和模块。通过理解这些基础知识,你可以更好地管理和组织你的Python项目,并有效地 解决 类似的错误。随着自然语言处理领域的不断发展, transform er s库和其他相关库将继续更新和扩展其功能。 图一就是 Transform er 模型 的框架,不过这里的encod er 和decod er 不再是RNN结构,拆开来看,细节如图二:原始论文里,作者设置了6层encod er 与6层decod er 结构。至于为什么是6,这就是一个超参数而已,可以根据实际情况设置为其他值。从图二 可以看到,计算流程是:输入的句子经过逐层编码后,最上层的encod er 会输出 间结果,这个 间结果在每一层decod er 都会用到。同时decod er 的计算也是从下往上进行,直到最后输出预测结果。这里省略的是最下层decod er 的输入:如果是训练过程,输入则是真实的目标句子;如果是预测过程,第一个输入开始标识符,预测下一个词,并且把这 首先,定义了一个 Transform er 模型 类,其 包含了嵌入层、位置编码层、 Transform er 编码层和全连接层。 然后,定义了一个位置编码类,用于为输入的文本添加位置编码信息。 接下来,初始化 模型 、优化器和学习率调度器,并进行训练。 在训练过程 使用 交叉熵损失函数计算损失,并 使用 反向传播和优化器来更新 模型 参数。 最后,保存训练好的 模型 。 是什么:是一个开源 NMT 工具 Open NMT is an open source ecosystem for neural machine translation and neural sequence learning. 来源:由哈佛NLP组推出,诞生于2016年年末,主版本基于Torch, 默认语言是Lua GitHub:https://... 其 requirements.txt里安装的是很新的torchtext git clone --branch 0.9.1 https://github.com/ Open NMT / Open NMT -py.git cd Open NMT -py pip install -r requirements.txt cd .. 其 src-train.txt和tgt-train.txt为原始英文... 项目网址: Open NMT - Open -Source Neural Machine Translationlogo:参考:《The Annotated Transform er 》翻译——注释和代码实现《Attention Is All You Need》_神洛华的博客-CSDN博客 transform er 注解在过去的一年里,《Attention is all you need》 transform er 一直萦绕在很多人的脑海里。除了在翻译质量上产生重大改进之外,它还为许多其他NLP任务提供了一种新的架构。论文本身写得很清楚,但传统观点认为很难正确执行。在这篇文章 ,我将以逐行实现的形式呈现论文的注释版本。我重新整理并删除了原论文 的一些章节,并在全文 添加了注释。这个文档本身就是一个工作笔记本,应该是一个 完全 可用的实现(可以在jupyt er notebook 运行)。