Transformer pytorch 代码解读(1)词编码 + 位置编码

从Encoder的整体来看,红色部分是词编码,黄色部分是位置编码,绿色部分是encoder计算层。红色和黄色部分只进行一次,而对于绿色部分经过for循环列表会执行多次,也就是下图中的N。

本文接下来将对红色和黄色的部分进行分析:

 

整体结构如图:

1.词编码 

 

nn.Embedding需要目标词库的长度,以及想要转换的维度。在实例化的forward使用中,输入的enc_inputs的维度是(2,6)也就是(batch_size,src_len)。也就是

[[1, 2, 3, 4, 0], [1, 2, 3, 5, 0]],代表着最原始的字母->编码。

在经过实例化的词编码后,编码的维度->(2,5,512)

 

 2.位置编码

forward这里传入的是上一层词编码的输出,也就是(2,5,512)的维度,(batch_size,src_len,编码的输出维度[自己定义的维度]),但是进行了transpose,所以他的输入是(5,2,512)的维度。经过位置编码的维度是不变的,只不过给其加上了位置的信息。

总结:

在进入多头注意力的计算之前,原始数据从(2,5)->(2,5,512)->(2,5,512),经过了两次变换,第一次是进行词编码,第二次虽然维度没有变换但是增加了位置的信息。

 

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值