Transformer之机器翻译

话不多说,上图

那么如何用pytorch搭建一个自己的Transformer并且用到NMT上呢

实现思路:

首先是Encoder层,这个层由多个EncoderBLock组成,

每个block为:Attention + residual + LN + FC + residual + LN

最后得到一个 batch_size,in_seq_len,embedding_dim的矩阵(和初始输入一样)

然后是Decoder层,这个层我们也可以理解为多个DecoderBlock组成,

每个block为:Attention + residual + LN + Attention + residual + LN + FC + residual + LN

因为由于我们做训练的时候,我们给的output是整句话,但是做预测的时候,模型要一个字一个字输出,所以Decoder的Attention存在Mask,所以我们对每个输入都要得到一个Mask矩阵,decoder的mask是为了不能看到未来,encoder的mask是为了去掉pad与单词的联系

那么最后我们也可以得到一个 batch_size,out_seq_len,embedding的矩阵

最后连接一个FC层(embedding,tgt_vocab_size)和softmax,我们就可以得到每一个目标字(词)的概率值,最后计算一下交叉熵损失,值得说的是,比如我们的翻译句子为:你好

那么我们的output应该为:index(BOS) index(你) index(好),

那么算损失的时候我们的目标为:index(你) index(好) index(EOS)

attention原理就不再说明了,相信各位也有一定基础,网上也有很精简的解释

最后给出结果,可能是分词不够精确吧,英文我用的是字母为单位的,中文我用的单个字做单位,数据也是比较少,只用了5000句话做训练(有好的GPU可以试一下用大一点的数据集),训练了2000轮,所以我感觉我现在训练的模型只是将句子背下来,没有创新能力,用单词作为单位可能会好一点(果然学深度学习确实很吃配置啊!)

上代码

对了如果要训练记得把config的device重新转为cuda就行

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Transformer发轫于NLP(自然语言处理),并跨界应用到CV(计算机视觉)领域。目前已成为深度学习的新范式,影响力和应用前景巨大。  本课程对Transformer的原理和PyTorch代码进行精讲,来帮助大家掌握其详细原理和具体实现。  原理精讲部分包括:注意力机制和自注意力机制、Transformer的架构概述、Encoder的多头注意力(Multi-Head Attention)、Encoder的位置编码(Positional Encoding)、残差链接、层规范化(Layer Normalization)、FFN(Feed Forward Network)、Transformer的训练及性能、Transformer机器翻译工作流程。   代码精讲部分使用Jupyter Notebook对Transformer的PyTorch代码进行逐行解读,包括:安装PyTorch、Transformer的Encoder代码解读、Transformer的Decoder代码解读、Transformer的超参设置代码解读、Transformer的训练示例(人为随机数据)代码解读、Transformer的训练示例(德语-英语机器翻译)代码解读。相关课程: 《Transformer原理与代码精讲(PyTorch)》https://edu.csdn.net/course/detail/36697《Transformer原理与代码精讲(TensorFlow)》https://edu.csdn.net/course/detail/36699《ViT(Vision Transformer)原理与代码精讲》https://edu.csdn.net/course/detail/36719《DETR原理与代码精讲》https://edu.csdn.net/course/detail/36768《Swin Transformer实战目标检测:训练自己的数据集》https://edu.csdn.net/course/detail/36585《Swin Transformer实战实例分割:训练自己的数据集》https://edu.csdn.net/course/detail/36586《Swin Transformer原理与代码精讲》 https://download.csdn.net/course/detail/37045

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值