pytorch dropout会减慢收敛_PyTorch中Transformer模型的搭建

本文介绍了如何在PyTorch 1.2版本中搭建Sequence2sequence形式的Transformer模型,重点关注PositionEncoding层,包括无参数和有可学习参数的实现。作者比较了两种PositionEncoding层在序列预测任务中的效果,并指出带有参数的层通常表现更好。最后,讨论了Transformer模型在训练过程中的并行解码特点。
摘要由CSDN通过智能技术生成

PyTorch最近版本更新很快,1.2/1.3/1.4几乎是连着出,其中: 1.3/1.4版本主要是新增并完善了PyTorchMobile移动端部署模块和模型量化模块。 而1.2版中一个重要的更新就是把加入了NLP领域中炙手可热的Transformer模型,这里记录一下PyTorchTransformer模型的用法(代码写于1.2版本,没有在1.3/1.4版本测试)。

1. 简介


也许是为了更方便地搭建BertGPT-2之类的NLP模型,PyTorchTransformer相关的模型分为nn.TransformerEncoderLayernn.TransformerDecoderLayernn.LayerNorm等几个部分。搭建模型的时候不一定都会用到, 比如fastai中的Transformer模型就只用到了encoder部分,没有用到decoder

至于WordEmbeddingPositionEncoding两个部分需要自己另外实现。

WordEmbedding可以直接使用PyTorch自带的nn.Embedding层。

PositionEncoding层的花样就多了,不同的模型下面有不同的PositionEncoding,比如Transformer的原始论文Attention is all you need中使用的是无参数的PositionEncodingBert中使用的是带有学习参数的PositionEncoding

在本文中介绍的是参考Transformer原始论文实现的Sequence2sequence形式的Transformer模型。

2. Sequence2sequence形式的Transformer模型搭建:


2.1 无可学习参数的PositionEnc

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值