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

网页设计与网站开发超链接vr网站制作

网页设计与网站开发超链接,vr网站制作,四川网站建设 招标,html网页制作模板代码免费Transformer经典案例 1、语言模型 以一个符合语言规律的序列为输入#xff0c;模型将利用序列间关系等特征#xff0c;输出在一个在所有词汇上的概率分布#xff0c;这样的模型称为语言模型。 2、语言模型能解决的问题 根据语言模型定义#xff0c;可以在它的基础上完成…Transformer经典案例 1、语言模型 以一个符合语言规律的序列为输入模型将利用序列间关系等特征输出在一个在所有词汇上的概率分布这样的模型称为语言模型。 2、语言模型能解决的问题 根据语言模型定义可以在它的基础上完成机器翻译文本生成等任务因为我们通过最后输出的概率分布来预测下一个词汇是什么 语言模型可以判断输入的序列是否为一句完整的话因为我们可以根据输出的概率分布查看最大概率是否落在句子结束符上来判断完整性 语言模型本身的训练目标是预测下一个词因为它的特征提取部分会抽象很多语言序列之间的关系这些关系可能同样对其它语言类任务有效果。因此可以作为预训练模型进行迁移学习 3、模型实现步骤 1、导包 2、导入wikiText-2数据集并作基本处理 3、构建用于模型输入的批次化数据 4、构建训练和评估函数 5、进行训练和评估包括验证以及测试 4、数据准备 wikiText-2数据集体量中等训练集共有600篇文章共208万左右词汇在33278个不重复词汇OVV(有多少正常英文词汇不在该数据集中的占比)为2.6%。验证集和测试集均为60篇。 torchtext重要功能 对文本数据进行处理比如文本语料加载文本迭代器构建等。 包含很多经典文本语料的预加载方法。其中包括的语料有用于情感分析的SST和IMDB用于问题分类TREC用于及其翻译的WMT14IWSLT,以及用于语言模型任务wikiText-2 # 1、导包 import math import torch import torch.nn as nn import torch.nn.functional as F #英文文本数据集工具包 import torchtext#导入英文分词工具 #from torchtext.legacy.data import Fieldfrom torchtext.data.utils import get_tokenizer #from torchtext.legacy.data import * #导入已经构建完成的Transformer包from pyitcast.transformer import TransformerModelimport torch import torchtext from torchtext.legacy.data import Field,TabularDataset,Iterator,BucketIteratorTEXTtorchtext.data.Field(tokenizeget_tokenizer(basic_english),init_token sos,eos_token eos,lower True) print(TEXT) # 2、导入wikiText-2数据集并作基本处理 train_txt,val_txt,test_txt torchtext.datasets.WikiText2.splits(TEXT) print(test_txt.examples[0].text[:10])#将训练集文本数据构建一个vocab对象可以使用vocab对象的stoi方法统计文本共包含的不重复的词汇总数 TEXT.build_vocab(train_txt) device torch.device(cuda if torch.cuda.is_available() else cpu)# 3、构建用于模型输入的批次化数据 def batchify(data,batch_size):#data,之前得到的文本数据# bsz,批次的样本量#第一步使用TEXT的numericalize方法将单词映射成对应的联系数字data TEXT.numericalize([data.examples[0].text])#取得需要经过多少次的batch_size后能够遍历完所有的数据nbatch data.size(0) // batch_size#利用narrow方法对数据进行切割#第一参数代表横轴切割还是纵轴切割0 代表横轴1代表纵轴#第二个参数第三个参数分别代表切割的起始位置和终止位置datadata.narrow(0,0,nbatch * batch_size)#对data的形状进行转变data data.view(batch_size,-1).t().contiguous()return data.to(device)# xtorch.tensor([[1,2,3],[4,5,6],[7,8,9]]) # print(x.narrow(0,0,2)) # print(x.narrow(1,1,2))#设置训练数据、验证数据、测试数据的批次大小 batch_size 20 eval_batch_size 10 train_data batchify(train_txt,batch_size) val_data batchify(val_txt,eval_batch_size) test_data batchify(test_txt,eval_batch_size)#设定句子的最大长度 bptt 35 def get_batch(source,i):seq_len min(bptt,len(source) - 1 - i)data source[i:iseq_len]target source[i1:i1seq_len].view(-1)return data,target# source test_data # i 1 # x,y get_batch(source,i) # print(x) # print(y)# 4、构建训练和评估函数 #通过TEXT.vocab.stoi方法获取不重复的词汇总数 ntokens len(TEXT.vocab.stoi) #设置词嵌入维度的值等于200 emsize 200 #设置前馈全连接层的节点数等于200 nhid 200 #设置编码层层数等于2 nlayers2 #设置多头注意力中的头数等于2 nhead 2 #设置置零比率 dropout 0.2 #将参数传入TransformerModel 中实例化模型 model TransformerModel(ntokens,emsize,nhead,nhid,nlayers,dropout).to(device)#设定损失函数采用交叉熵损失函数 criterion nn.CrossEntropyLoss()#设置学习率 lr 5.0#设置优化器 optimizer torch.optim.SGD(model.parameters(),lrlr)criterion nn.CrossEntropyLoss() lr 5.0 optimizer torch.optim.SGD(model.parameters(),lrlr) #定义学习率调整器使用torch自带的lr_scheduler,将优化器传入 scheduler torch.optim.lr_scheduler.StepLR(optimizer,1.0,gamma0.95)# 5、进行训练和评估包括验证以及测试#训练函数 import time def train():#首先开启训练模式model.train()#定义初始损失值total_loss 0start_time time.time()#遍历训练数据进行模型的训练for batch,i in enumerate(range(0,train_data.size(0) -1 ,bptt)):#通过前面的get_batch函数获取源数据和目标数据data,targets get_batch(train_data,i)#设置梯度归零optimizer.zero_grad()#通过模型预测输出output model(data)#计算损失值loss criterion(output.view(-1,ntokens),targets)#进行反向传播loss.backward()#进行梯度规范化防止出现梯度爆炸或者梯度消失torch.nn.utils.clip_grad_norm(model.parameters(),0.5)#进行参数更新optimizer.step()#将损失值进行累加total_loss loss.item()# 获取当前开始时间log_interval 200#打印日志信息if batch % log_interval 0 and batch0:#计算平均损失cur_loss total_loss/log_interval#计算训练到目前的耗时elapsed time.time() - start_time#打印日志信息print(| epoch {:3d} | {:5d}/{:5d} batches | lr {:02.2f} | ms/batch {:5.2f} | loss {:5.2f} | ppl {:8.2f}.format(epoch, batch, len(train_data) // bptt, scheduler.get_lr()[0],elapsed * 1000 / log_interval,cur_loss, math.exp(cur_loss)))#每个打印批次借结束后将总损失值清零total_loss 0start_time time.time()#评估函数 def evaluate(eval_model,data_source):#eval_model,代表每轮训练后产生的模型# data_source代表验证集数据或者测试集数据#首先开启评估模式eval_model.eval()#初始化总损失值total_loss 0#模型开启评估模式不进行反向传播求梯度with torch.no_grad():#遍历验证数据for i in range(0,data_source.size(0)-1,bptt):#首先通过get_batch函数获取源数据和目标数据data,targets get_batch(data_source,i)#将源数据放入评估模型中进行预测output eval_model(data)#对输出张量进行变形output_flat output.view(-1,ntokens)#累加损失值total_loss criterion(output_flat,targets).item()#返回评估的总损失值return total_lossbest_val_loss float(inf)epochs 3 best_model Nonefor epoch in range(1,epochs 1):epoch_start_time time.time()train()val_loss evaluate(model,val_data)print(-*50)print(| end of epoch {:3d} | time: {:5.2f}s | valid loss {:5.2f} | valid ppl {:8.2f}.format(epoch, (time.time() - epoch_start_time),val_loss, math.exp(val_loss)))print(-*50)#通过比较当前轮次的损失值获取最佳模型if val_lossbest_val_loss:best_val_lossval_lossbest_modelmodel#每个轮次后调整优化器的学习率scheduler.step()#添加测试的流程代码 test_loss evaluate(best_model,test_data) print(-*90) print(|End of training |test loss {:5,2f}.format(test_loss)) print(-*50) 没有运行成功
http://www.pierceye.com/news/372919/

相关文章:

  • 公司制作网站东莞南城房价
  • 智能建站系统seo网站优化方案
  • 南宁网站建设找建站通成都seo推广
  • 网站做镜像的有什么用建设银行流水网站
  • 湖北网站定制开发价格表宣传片制作协议
  • 开网站要多少钱自己怎样做网站
  • 建设网站的教程免费的wordpress分类在哪设置
  • 电子书网站 跟我学做家常菜800网站建设与维护 教学大纲
  • 河南省住房城乡建设主管部门网站wordpress还有人在用吗
  • 好口碑关键词优化沈阳企业关键词优化
  • 外汇自动跟单网站开发wordpress支持中文
  • 南宁网站建设推广教育类网站框架
  • 定制网站建设服务公司摄影设计师招聘
  • 地图 添加到网站观点网站
  • 给分管领导网站建设情况汇报怎么写企业网站的发展历史
  • 佛山营销网站建设费用app制作器下载软件
  • 如何将优酷视频上传到自己网站万能网
  • 域名销售网站wordpress 数据库配置文件
  • 广州营销型网站建设怎么样做网站必须要认证吗
  • 网站开发主要内容免费商城平台
  • 青岛建站方案海兴县网站建设公司
  • 网站文案框架兰州网页制作公司网站
  • 专业网站有哪些平台wordpress那个版本
  • 网站建设按钮详情页设计图
  • 杭州公司注册代理中介深圳关键词优化软件
  • 乐清网站制作公司电话免费做初中试卷的网站
  • 注册一个网站的流程反向代理服务器做wordpress外网
  • 沁阳网站建设tomcat建网站
  • 品牌网站建设公司推荐网站建设公司3lue
  • 装修公司网站模版徐州品牌网站建设