当前位置: 首页 > news >正文

python做网站项目昆明铁路局建设工程网站

python做网站项目,昆明铁路局建设工程网站,做童装在哪个网站找客户,天津建筑工程公司有哪些《Transformer的PyTorch实现》这篇博文以一个机器翻译任务非常优雅简介的阐述了Transformer结构。在阅读时存在一些小困惑#xff0c;此处权当一个记录。 1.自定义数据中enc_input、dec_input及dec_output的区别 博文中给出了两对德语翻译成英语的例子#xff1a; # S: de…《Transformer的PyTorch实现》这篇博文以一个机器翻译任务非常优雅简介的阐述了Transformer结构。在阅读时存在一些小困惑此处权当一个记录。 1.自定义数据中enc_input、dec_input及dec_output的区别 博文中给出了两对德语翻译成英语的例子 # S: decoding input 的起始符 # E: decoding output 的结束符 # P意为padding如果当前句子短于本batch的最长句子那么用这个符号填补缺失的单词 sentence [# enc_input dec_input dec_output[ich mochte ein bier P,S i want a beer ., i want a beer . E],[ich mochte ein cola P,S i want a coke ., i want a coke . E], ]初看会对这其中的enc_input、dec_input及dec_output三个句子的作用不太理解此处作详细解释 -enc_input是模型需要翻译的输入句子, -dec_input是用于指导模型开始翻译过程的信号 -dec_output是模型训练时的目标输出模型的目标是使其产生的输出尽可能接近dec_output即为翻译真实标签。他们在transformer block中的位置如下 在使用Transformer进行翻译的时候需要在Encoder端输入enc_input编码的向量在decoder端最初只输入起始符S然后让Transformer网络预测下一个token。 我们知道Transformer架构在进行预测时每次推理时会获得下一个token因此推理不是并行的需要输出多少个token理论上就要推理多少次。那么在训练阶段也需要像预测那样根据之前的输出预测下一个token然而再所引出dec_output中对应的token做损失吗实际并不是这样如果真是这样做就没有办法并行训练了。 实际我认为Transformer的并行应该是有两个层次 1不同batch在训练和推理时是否可以实现并行 2一个batch是否能并行得把所有的token推理出来 Tranformer在训练时实现了上述的12而推理时12都没有实现。Transformer的推理似乎很难实现并行原因是如果一次性推理两句话那么如何保证这两句话一样长难道有一句已经结束了另一句没有结束需要不断的把结束符E送入继续预测下一个结束符吗此外Transformer在预测下一个token时必须前面的token已经预测出来了如果第i-1个token都没有是无法得到第i个token。因此推理的时候都是逐句话预测逐token预测。这儿实际也是我认为是transformer结构需要改进的地方。这样才可以提高transformer的推理效率。 2.Transformer的训练流程 此处给出博文中附带的非常简洁的Transformer训练代码 from torch import optim from model import *model Transformer().cuda() model.train() # 损失函数,忽略为0的类别不对其计算loss因为是padding无意义 criterion nn.CrossEntropyLoss(ignore_index0) optimizer optim.SGD(model.parameters(), lr1e-3, momentum0.99)# 训练开始 for epoch in range(1000):for enc_inputs, dec_inputs, dec_outputs in loader:enc_inputs: [batch_size, src_len] [2,5]dec_inputs: [batch_size, tgt_len] [2,6]dec_outputs: [batch_size, tgt_len] [2,6]enc_inputs, dec_inputs, dec_outputs enc_inputs.cuda(), dec_inputs.cuda(), dec_outputs.cuda() # [2, 6], [2, 6], [2, 6]outputs model(enc_inputs, dec_inputs) # outputs: [batch_size * tgt_len, tgt_vocab_size]loss criterion(outputs, dec_outputs.view(-1)) # 将dec_outputs展平成一维张量# 更新权重optimizer.zero_grad()loss.backward()optimizer.step()print(fEpoch [{epoch 1}/1000], Loss: {loss.item()}) torch.save(model, fMyTransformer_temp.pth)这段代码非常简洁可以看到输入的是batch为2的样本送入Transformer网络中直接logits算损失。Transformer在训练时实际上使用了一个策略叫teacher forcing。要解释这个策略的意义以本博文给出的样本为例对于输入的样本 ich mochte ein bier在进行训练时当我们给出起始符S接下来应该预测出 I那训练时有了SI后则应该预测出 want那么问题来了如I就预测错了假如预测成了a,那么在预测want时还应该使用Sa来预测吗当然不是即使预测错了也应该用对应位置正确的tokenSI去预测下一个token这就是teacher forcing。 那么transformer是如何实现这样一个teacher forcing的机制的呢且听下回分解。
http://www.w-s-a.com/news/925195/

相关文章:

  • js网站开发工具软件营销方案
  • 做网站的天空网云南省建设厅网站怎么进不去
  • 天津网站排名提升网络营销推广策略包括哪些
  • 网站建设与管理 ppt网站打开是别人的
  • 图片网站怎么做排名怎么分析一个网站seo
  • 伪原创对网站的影响深圳装修公司排名100强
  • 网站建设公司效果个人可以做医疗信息网站吗
  • 网站使用arial字体下载微网站 建设
  • 文化馆网站建设意义营销型国外网站
  • 公司网站定位建议wordpress怎么用模板
  • 中国十大热门网站排名计算机选什么专业最好
  • 怀化建设企业网站太原网站关键词排名
  • 空间注册网站网站制作是怎么做的
  • 数码家电商城网站源码一个网站的成本
  • 网站伪静态是什么意思麻涌东莞网站建设
  • 理县网站建设公司郑州仿站定制模板建站
  • 手机网站建设网站报价诸城人才网招聘网
  • 一起做网站怎么下单临沂网站制作
  • 公司网站案例企业网站 模版
  • 做的好的响应式网站有哪些网站界面设计案例
  • 上海创意型网站建设icp备案网站信息
  • 网站没收录中山手机网站制作哪家好
  • 代驾软件开发流程wordpress 博客主题 seo
  • 成都的教育品牌网站建设网站广告js代码添加
  • 网站找人做seo然后网站搜不到了网站建设seoppt
  • 做网站优化有用吗学做文案的网站
  • wordpress 知名网站怎么做微网站
  • 用电脑怎么做原创视频网站河南建设工程信息网一体化平台官网
  • 云服务器和网站空间郑州做招商的网站
  • 规模以上工业企业的标准北京seo结算