张国荣情话
发布时间:2019-07-30 16:38:38
作者:xhs
阅读:956
张国荣情话:('pytorch learning record-TorchText和pytorch 2的示例\n0.PyTorch Seq2seq项目简介\n完成基本TorchText后,查找本教程,了解并实现基于PyTorch和TorchText的Seq2seq模型。\n此项目由6个子项目组成\n\n使用神经网络跟踪Seq2seq \nRN编码器解码器培训短语expresSION用于统计机器翻译\n通过使用联合学习\n包填充序列、掩码和推理\n转换seq2seq \n变压器完成NMT的堆叠和翻译。RNN编码器-解码器训练短语表达式用于统计机器翻译\n我们已经介绍了基本的工作流程,本教程将重点改进我们的结果。基于之前教程中关于pytorch和torchttext的知识,我们将介绍第二个和第二个模型,这有助于解决编码器-解码器模型所面临的信息压缩问题。该模型将基于使用RNN编码器解码器进行统计机器翻译并使用GRU的学习短语表示的实现。\n本节教程来自使用RNN编码器的学习短语表示-用于统计机器翻译的解码器“\n2.1 int制作\n这里回顾上一节中的通用编码器-解码器模型。\n2.2处理数据\n文本和空间与上次导入火炬相同。nn as nn \n导入火炬。optim as optim \n从torchttext.datasets导入translationdataset,multi30k \n从torchttext.data导入字段,bucketiterator \n导入空间\n导入随机\n导入数学\n导入时间\n \n seed=1234 \n随机种子(种子)火炬。手动播种(种子)火炬。后端。库德恩。确定性=真\n \n复杂性=空间。加载(\'de\')\n空间=空间。负载()en \'\n \ndef tokenize \u de(文本):\n返回[stok.text for tok in spacy \u de.tokenizer(文本)]\n \ndef tokenize \u en(文本):\n返回[tok.text for tok in spacy \u en.tokenizer(文本)]\n \nsrc=field(tokenize=tokenize \u de,init \u token='\,eos \'\,the lower=true)\ntrg=field(tokenize=tokenize\u en,init\u token=\'\',eos\u token=\'\',the lower=true)\n\n传输有效数据,测试数据=multi30k。splits(exts=''de\',\'en\'),fields=(src,trg))\n打印(vars(train\u data)。示例[11])\n\']、''trg\':[\'four\'、''guys\'、''three\'、''wear\'、''hats\'、''one\'、''not\'和'are\'、''jumping\'、''at\'、''the\'、''top\'和'of\'、''a\'、''staircase\'、''。\']\n\n源代码。构建_vocab(训练_data,min_freq=2)\ntrg。构建_vocab(训练_数据,最小_频率=2)\n\n设备=火炬。装置(‘CUDA’如果是火炬。库达。_Javaailable()else \'cpu \')\n设备=火炬。设备(\'cpu\')\n \nbatch_size=128 \ntrain_迭代器有效迭代器,test_迭代器=bucketiterator。splits(\n(train_data valid_data,test_data),\n batch_size=batch_size,n device=device\n),\n\n2.3 build seq2seq model\n2.3.1编码器编码器\n编码器与上一个模型相似,只是lstm被单层GRU替换,而dropout不作为GRU中的参数传入,因为在多个RNN的每一层之间使用退出。由于我们只有一个层,如果我们试图使用传入的Dropout值,PyTorch将显示警告。\n此外,GRU只需要返回值的隐藏状态,而不像LSTM,它需要单元格状态。\n\n下面的部分与前一个模型非常相似,使用卷积计算序列x的隐藏状态h并返回上下文向量z的操作。\n\n这与普通seq2seq模型的编码器相同,其中所有“魔力”都发生在GRU(绿色方块)中。\n\n\n\n\n\n图像。png \n \nlet查看实现代码\n类编码器(nn模块):\ndef uuu init_uuuu(self,input u dim emb_dim,hid dim,dropout):\n self,super(encoder)uu init_uuuuu()\n \self。input_dim=输入_dim \n选择。emb_dim=emb_dim\self.hid_dim=hid_dim\n自我。dropout=dropout\n\n自己。嵌入=nn。嵌入(input_dim emb_dim)\n自己。RNN=nn。GRU帮助(emb-dim-hid-dim),“02b2f362d415dae”,“lgektukq5dpuhjg4mrrqwzfeky5on8s”,0,“自我”。退出=nn。dropout(dropout)\ndef forward(self,src):\n[src sent len,batch size]\nembedded=self。辍学(自我。嵌入(src))\nOutputs,hidden=self。RNN(Embedded)\nOutputs=[SRC sent len,batch size,hid dim*n directions]\n hidden=[N layers*n directions,batch size,hid dim]\n返回隐藏\n\n2.3.2解码器\n编码器与以前的模型非常不同,这降低了信息的压缩。GRU不仅获取目标令牌、以前的隐藏状态,还获取上下文向量z\n\n注意,这个z没有t下标,这表示我们正在使用相同的复用编码器层返回上下文状态(隐藏状态)。\n当前令牌和上下文向量z是预测的使用线性处理。\n\n\n\n\n\n\n图像。可以看到PNG \n \n,此解码器与前一个解码器不同。初始隐藏状态仍然是上下文向量,因此在生成第一个令牌时,我们实质上是在GRU中输入两个相同的上下文向量。\n\n在实现时,GRU被传入并连接,因此输入维度应为emb_dim+hid_dim\n线性层输入和d连接,隐藏状态和上下文向量具有相同的维度,因此输入维度emb_dim+hid_dim*2\n前进现在需要上下文参数。在前进过程中,我们将连接到emb_con,然后输入gru,我们将连接到该gru作为输出,然后通过线性层提供该gru以接收我们的预测。这里是张量的猫。cat是将两个张量放在一起的张量,cat是concatate。\n类解码器(nn模块):\ndef u init_uuuu(self,output dim emb_dim,hid dim,dropout):\n self,super(decoder)uuuinit_uuuuu()\n\n选择。output_dim=输出_dim \n选择。emb_dim=emb_dim\self.hid_dim=hid_dim\n自我。dropout=dropout\n\n自己。嵌入=nn。嵌入(输出_dim emb_dim)\n自己。RNN=nn。GRU帮助了(emb dim+hid dim,hid dim)选择。输出=nn。线性(emb_dim+hid_dim*2,输出_dim)\n自我。退出=nn。Dropout(Dropout)\n\ndef forward(self,input,hidden,context):\n input=[批大小]\nhidden=[n层*n方向,批大小,hid dim]\n[n层*n方向,批大小,hid dim]\n\n·解码器中的层和n方向都将始终为1,因此:\nhidden=[1,批大小,hid dim]\n context=[1,批处理大小,hid dim]\n\n输入=输入。unsqueze(0)\nembedded=self。辍学(自我。Embedding(input))\n Embedded=[1,批量大小,emb dim]\n\nemb_con=torch。cat((嵌入,上下文),dim=2)\n emb_con=[1,批处理大小,emb dim+hid dim]\n\n hidden=self的输出。RNN(Emb_-Con,Hidden):输出=焊炬。CAT((嵌入。挤压(0),隐藏。挤压(0),上下文。挤压(0),dim=1\n\n说明=self。输出(输出)返回预测,隐藏\n\n2.3.3 seq2seq \n类seq2seq(nn module):\ndef仲裁init_uuuu(self,encoder,decoder,device):\nsuper(seq2seq,self)uuu init_uuu()\n自身。编码器=编码器\n自身。解码器=解码器\n自身。device=device\nhid_dim==decoder。hid \u dim,“编码器和解码器的隐藏尺寸必须相等!”\ n \ndef forward(self,src,trg,teacher_forcing_ratio=0.5):\n[src sent len,batch size]\n trg=[trg sent len,batch size]\nbatch_size=trg。sh'、'02b2f362d15dae'、'lgektukq5dpuhjg4mrrqwzfeky5on8s',0)、'02b2f362d15dae'、'lgektukq5dpuhjg4mrrqwzfeky5on8s',0,(“ape[1]\nmax len=trg.形状[0]\ntrg_vocab_size=self。解码器。output_dim \n \noutputs=焊炬。零(max_len,batch_size,trg_vocab_size)到(self)设备\n上下文=self。编码器(src)\nhidden=context\ninput=trg[0,:)\n对于t在范围(1,max_len):\n hidden=self的输出。解码器(输入、隐藏和上下文)\nOutputs[t]=输出\n处理器力=随机。random()']\ncriterion=nn.交叉熵丢失(忽略_index=pad_idx)\n\n建立训练循环和验证循环\n def train(model、iterator、optimizer、criteria、clip):\n\n模型。i的列()\n \nepoch_loss=0 \n \n enumerate(迭代器),批入枚举(迭代器):\n \nsrc=batch。src\ntrg=批处理。trg \n \n计时器。Zero_Grad()\n\nOutput=Model(src,trg)\n\n_trg=[trg sent len,batch size]\n output=[trg sent len,batch size,output dim]\n\n输出张国荣情话
版权声明:本文内容由互联网用户投稿整理编辑发布,不拥有所有权,不承担应有相关法律责任。如果文章、图片有涉嫌抄袭的内容,请发送到邮箱举报,且提供抄袭的相关证据,一但查实,会在24小时删除涉嫌侵权内容。
猜您喜欢
想知道女生是不是喜欢你,教用一个问题测试她喜欢你的方法:你可以对她说一句话:你好像长胖了一点?(看看女生是什么反应。不过如果男生问出这个问题,可能让女生觉得你情商低,就算女生喜欢你也有一定的风险性)
2024-02-20
如果男生犯了错惹女朋友生气,那就一定要想办法哄好她,因为是你错了呀。而想要哄好生气的女朋友,那你一定要认识到自己的错误,下面给大家分享惹女朋友生气检讨书1000字,希望能够帮助你哄好你的女朋友。
2024-02-19
如果女朋友说分手后做朋友是什么意思呢?如果是还爱着对方那就不应该选择分手,如果是不爱了那大家就应该彻底断了联系,真正深爱过的人是不可能在分手后做朋友的。下面就来分析女朋友的心理。
2024-02-18
脱单神器
安卓版蜜小助APP
iOS版蜜小助APP
20W+可复制撩妹话术
实战案例+话术+视频+教程
热门情话大全
开车污的句子段子 真喜欢你吞吞吐吐的样子
2019-12-03
350725
开车污的句子不能超过10个子 女生根本抵抗不住
2019-12-09
210355
老司机开车句子污 看过的都脸红了
2019-12-05
162371
老司机开车经典语句 再不上车就晚啦
2019-12-04
154752
用古诗暗示我想你 句句含蓄浪漫令人倾心
2020-01-20
128313
甜到炸的句子给闺蜜 感恩一路有你
2020-01-15
97581
开车的的句子污 老司机发车确定不上吗
2019-12-09
85726
老司机开车短污段子 老板拿两瓶可乐来
2019-11-29
42352
人看到花后的心情句子 很有文艺范
2019-12-23
40999
女生问你吃饭了吗 情话套路一套一套的
2020-02-08
39827