• 工资「喂饱肚子」,副业「养活灵魂」!

  • 感谢大家访问本站,希望本站的内容可以帮助到大家!

  • 问题反馈可发送邮件到stubbornhuang@qq.com

  • 欢迎大家交换友链,可在https://www.stubbornhuang.com/申请友情链接进行友链交换申请!

  • 在本站开通年度VIP,无限制下载本站资源和阅读本站文章

  • 如果觉得本站的内容有帮助,可以考虑打赏博主哦!

  • 本站由于前段时间遭受到大量临时和国外邮箱注册,所以对可注册的邮箱类型进行了限制!

  • 本站会放置Google广告用于维持域名以及网站服务器费用。

  • 计算机图形学与计算几何经典必备书单整理,下载链接可参考:https://www.stubbornhuang.com/1256/

Pytorch – nn.Transformer、nn.TransformerEncoderLayer、nn.TransformerEncoder、nn.TransformerDecoder、nn.TransformerDecoder参数详解

Pytorch 发布于2022-07-13 阅读 13,822次 0次评论 5次点赞 本文共4253个字,阅读需要11分钟。

1 nn.Transformer

1.1 nn.Transformer定义

1.函数形式

torch.nn.Transformer(d_model=512, nhead=8, num_encoder_layers=6, num_decoder_layers=6, dim_feedforward=2048, dropout=0.1, activation='relu', custom_encoder=None, custom_decoder=None)

2.函数参数

  • d_model:编码器或者解码器输入特征数量,默认值为512
  • nhead:多头注意力模型中的头数,默认值为8
  • num_encoder_layers:编码器中子编码器层数,默认值为6
  • num_decoder_layers:解码器中子解码器层数,默认值为6
  • dim_feedforward:前馈网络模型的维度,默认值为2048
  • dropout:dropout值,默认为0.1
  • activation:编码器或者解码器中间层的激活函数,relu或者gelu,默认为relu
  • custom_encoder:自定义编码器,默认无
  • custom_decoder:自定义解码器,默认无

1.2 nn.Transformer使用

1.函数形式

forward(src, tgt, src_mask=None, tgt_mask=None, memory_mask=None, src_key_padding_mask=None, tgt_key_padding_mask=None, memory_key_padding_mask=None)

2.函数参数

  • src:编码器的序列,必需参数,形状为(S,N,E)
  • tgt:解码器的序列,必需参数,形状为(T,N,E)
  • src_mask:src的附加掩码,可选参数,形状为(S,S)
  • tgt_mask:tgt的附加掩码,可选参数,形状为(T,T)
  • memory_task:编码器输出的附加掩码,可选参数,形状为(T,S)
  • src_key_padding_mask:每个batch的scr keys的ByteTensor掩码,可选参数,形状为(N,S)
  • tgt_key_padding_mask:每个batch的tgt keys的ByteTensor掩码,可选参数,形状为(N,T)
  • memory_key_padding_mask:每个batch的memory keys的ByteTensor掩码,可选参数,形状为(N,S)

其中,S为源序列长度,T为目标序列长度,N为batch size,E为特征数

3.函数输出

输出形状为(T,N,E)的Tensor

1.3 简单使用

假设batch size为32,输入序列长度为10,输出序列长度为20,特征数量为512,采用6个多头注意力模型,编码器的子编码层数为10,则

transformer_model = nn.Transformer(nhead=16, num_encoder_layers=12)
src = torch.rand((10, 32, 512))
tgt = torch.rand((20, 32, 512))
out = transformer_model(src, tgt)

2 nn.TransformerEncoderLayer

Transformer EncoderLayer 由 self-attn 和前馈网络组成。

2.1 nn.TransformerEncoderLayer定义

1.函数形式

torch.nn.TransformerEncoderLayer(d_model, nhead, dim_feedforward=2048, dropout=0.1, activation='relu')

2.函数参数

  • d_model:输入特征数量,必需参数
  • nhead:多头注意力模型中的头数,必需参数
  • dim_feedforward:前馈网络模型的维度,默认值为2048
  • dropout:dropout值,默认为0.1
  • activation:编码器或者解码器中间层的激活函数,relu或者gelu,默认为relu

2.2 nn.TransformerEncoderLayer使用

1.函数形式

forward( src , src_mask=None , src_key_padding_mask=None )

2.函数参数

  • src:编码器层的序列,必需参数
  • src_mask:src 序列的掩码,可选参数
  • src_key_padding_mask:每个batch的scr keys的ByteTensor掩码,可选参数

2.3 简单使用

encoder_layer = nn.TransformerEncoderLayer(d_model=512, nhead=8)
src = torch.rand(10, 32, 512)
out = encoder_layer(src)

3 nn.TransformerEncoder

3.1 nn.TransformerEncoder定义

1.函数形式

torch.nn.TransformerEncoder(encoder_layer, num_layers, norm=None)

nn.TransformerEncoder是堆叠num_layers个自编码器层数的模块

2.函数参数

  • encoder_layer:nn.TransformerEncoderLayer的实例对象,必需参数

  • num_layers:编码器中子编码器层数,必需参数

  • norm:层规范化组件,可选参数

3.2 nn.TransformerEncoder使用

1.函数形式

forward(src, mask=None, src_key_padding_mask=None)

将输入依次通过编码器层。

2.函数参数

  • src:编码器的输入序列,必需参数
  • mask:src序列的掩码,可选参数
  • src_key_padding_mask:每个batch的scr keys的ByteTensor掩码,可选参数,默认为None

2.函数输出

输出out与输入src具有相同的形状(S,N,E)

3.3 简单使用

encoder_layer = nn.TransformerEncoderLayer(d_model=512, nhead=8)
transformer_encoder = nn.TransformerEncoder(encoder_layer, num_layers=6)
src = torch.rand(10, 32, 512)
out = transformer_encoder(src)

4 nn.TransformerDecoderLayer

4.1 nn.TransformerDecoderLayer定义

1.函数形式

torch.nn.TransformerDecoderLayer(d_model, nhead, dim_feedforward=2048, dropout=0.1, activation='relu')

2.函数参数

  • d_model:输入特征数量,必需参数

  • nhead:多头注意力模型中的头数,必需参数

  • dim_feedforward:前馈网络模型的维度,默认值为2048

  • dropout:dropout值,默认为0.1

  • activation:编码器或者解码器中间层的激活函数,relu或者gelu,默认为relu

4.2 nn.TransformerDecoderLayer使用

1.函数形式

forward(tgt, memory, tgt_mask=None, memory_mask=None, tgt_key_padding_mask=None, memory_key_padding_mask=None)

2.函数参数

  • tgt:解码器的序列,必需参数

  • memory:编码器最后一层的序列,必需参数

  • tgt_mask:tgt的附加掩码,可选参数

  • memory_mask:编码器输出的附加掩码,可选参数

  • tgt_key_padding_mask:每个batch的tgt keys的ByteTensor掩码,可选参数

  • memory_key_padding_mask:每个batch的memory keys的ByteTensor掩码,可选参数

4.3 简单使用

decoder_layer = nn.TransformerDecoderLayer(d_model=512, nhead=8)
memory = torch.rand(10, 32, 512)
tgt = torch.rand(20, 32, 512)
out = decoder_layer(tgt, memory)

5 nn.TransformerDecoder

5.1 nn.TransformerDecoder定义

1.函数形式

torch.nn.TransformerDecoder(decoder_layer, num_layers, norm=None)

2.函数参数

  • decoder_layer:nn.TransformerDecoderLayer的实例对象,必需参数

  • num_layers:解码器中子解码器层数,必需参数

  • norm:层规范化组件,可选参数

5.2 nn.TransformerDecoder使用

1.函数形式

forward(tgt, memory, tgt_mask=None, memory_mask=None, tgt_key_padding_mask=None, memory_key_padding_mask=None)

2.函数参数

  • tgt:解码器的序列,必需参数

  • memory:编码器最后一层的序列,必需参数

  • tgt_mask:tgt的附加掩码,可选参数

  • memory_mask:编码器输出的附加掩码,可选参数

  • tgt_key_padding_mask:每个batch的tgt keys的ByteTensor掩码,可选参数

  • memory_key_padding_mask:每个batch的memory keys的ByteTensor掩码,可选参数

5.3 简单使用

decoder_layer = nn.TransformerDecoderLayer(d_model=512, nhead=8)
transformer_decoder = nn.TransformerDecoder(decoder_layer, num_layers=6)
memory = torch.rand(10, 32, 512)
tgt = torch.rand(20, 32, 512)
out = transformer_decoder(tgt, memory)

欢迎扫码关注我的微信公众号,及时获取文章更新

微信公众号二维码

本文作者:StubbornHuang

版权声明:本文为站长原创文章,如果转载请注明原文链接!

原文标题:Pytorch – nn.Transformer、nn.TransformerEncoderLayer、nn.TransformerEncoder、nn.TransformerDecoder、nn.TransformerDecoder参数详解

原文链接:https://www.stubbornhuang.com/2205/

发布于:2022年07月13日 9:04:51

修改于:2023年06月25日 20:57:48

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

文章末尾
上一篇
计算几何 - 求解两个三维向量之间的三维旋转矩阵
计算几何
下一篇
深度学习 - 通俗理解Beam Search Algorithm算法
深度学习
当前分类随机文章推荐

发表评论

您必须 [ 登录 ] 才能发表留言!

关注我们的公众号

微信公众号