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

h5页面生成常德自助建站seo

h5页面生成,常德自助建站seo,网站建设高端培训班,wordpress获取微信用户信息目录 1 自定义数据集 2 分词 2.1 重写collate_fn方法 3 用BertModel加载预训练模型 4 模型试算 5 定义下游任务 6 训练 7 测试 #导包 import torch from datasets import load_from_disk #用于加载本地磁盘的datasets文件 1 自定义数据集 #自定义数据集 #…目录 1  自定义数据集 2  分词  2.1  重写collate_fn方法¶ 3  用BertModel加载预训练模型  4  模型试算 5  定义下游任务¶ 6  训练  7  测试  #导包 import torch from datasets import load_from_disk #用于加载本地磁盘的datasets文件 1  自定义数据集 #自定义数据集 #需要继承 torch.utils.data.Dataset, #并且实现__init__(self)/__len__(self)/__getitem__(self,i)这些方法 class Dataset(torch.utils.data.Dataset):def __init__(self, split):#加载本地磁盘的datasetsself.datasets load_from_disk(../data/ChnSentiCorp) #self.datasets是一个字典包含训练、校验、测试的datatsetself.dataset self.datasets[split] #使用split来区分获取的是训练、校验、测试的datatset中的哪一个def __len__(self):return len(self.dataset)def __getitem__(self, i):让数据集像列表一样可以根据索引获取数据‘text’与“label”text self.dataset[i][text]label self.dataset[i][label]return text, labeldataset Dataset(splittrain) dataset __main__.Dataset at 0x2afb31f03a0 dataset.dataset Dataset({features: [text, label],num_rows: 9600 }) len(dataset) 9600 dataset[0] (选择珠江花园的原因就是方便有电动扶梯直接到达海边周围餐馆、食廊、商场、超市、摊位一应俱全。酒店装修一般但还算整洁。 泳池在大堂的屋顶因此很小不过女儿倒是喜欢。 包的早餐是西式的还算丰富。 服务吗一般,1) 2  分词  #分词工具导包 from transformers import BertTokenizer #加载字典和分词工具 huggingface自带的中文词典bert-base-chinese加载进来 tokenizer BertTokenizer.from_pretrained(r../data/bert-base-chinese/) tokenizer BertTokenizer(name_or_path../data/bert-base-chinese/, vocab_size21128, model_max_length512, is_fastFalse, padding_sideright, truncation_sideright, special_tokens{unk_token: [UNK], sep_token: [SEP], pad_token: [PAD], cls_token: [CLS], mask_token: [MASK]}, clean_up_tokenization_spacesTrue), added_tokens_decoder{0: AddedToken([PAD], rstripFalse, lstripFalse, single_wordFalse, normalizedFalse, specialTrue),100: AddedToken([UNK], rstripFalse, lstripFalse, single_wordFalse, normalizedFalse, specialTrue),101: AddedToken([CLS], rstripFalse, lstripFalse, single_wordFalse, normalizedFalse, specialTrue),102: AddedToken([SEP], rstripFalse, lstripFalse, single_wordFalse, normalizedFalse, specialTrue),103: AddedToken([MASK], rstripFalse, lstripFalse, single_wordFalse, normalizedFalse, specialTrue), } 2.1  重写collate_fn方法¶ 自定义取数据的方法  def collate_fn(data):#从传入的数据集datadataset中分离出文本句子sents和标签labelssents [i[0] for i in data]labels [i[1] for i in data]#编码完成句子的分词操作data tokenizer.batch_encode_plus(batch_text_or_text_pairssents,truncationTrue, #文本超过最大长度会被截断paddingmax_length, #不足最大长度补充《pad》return_tensorspt, #返回的数据是pythorch类型return_lengthTrue)#获取编码之后的数字 索引input_ids data[input_ids]attention_mask data[attention_mask]token_type_ids data[token_type_ids]labels torch.LongTensor(labels) #labels在pythorch中一般设置成long类型return input_ids, attention_mask, token_type_ids, labels #创建数据加载器 loader torch.utils.data.DataLoader(datasetdataset, #将数据集传进来batch_size16, #一批数据16个collate_fncollate_fn, #传入自定义的取数据的方法shuffleTrue, #打乱数据drop_lastTrue #最后一批数据若不满足16个数据就删除 )for i, (input_ids, attention_mask, token_type_ids, labels) in enumerate(loader):break #只完成赋值不输出打印 print(len(loader)) 600 print(input_ids.shape, attention_mask.shape, token_type_ids.shape, labels.shape) torch.Size([16, 512]) torch.Size([16, 512]) torch.Size([16, 512]) torch.Size([16]) 3  用BertModel加载预训练模型  #Bert模型导包 from transformers import BertModel#加载预训练模型 pretrained BertModel.from_pretrained(../data/bert-base-chinese/)#固定bert的参数 遍历参数修改每一个参数的requires_grad_使其不能进行求导、梯度下降 for param in pretrained.parameters():param.requires_grad_(False) #变量最右边添加下划线表示直接修改变量的原始属性 4  模型试算 out pretrained(input_idsinput_ids, attention_maskattention_mask, token_type_idstoken_type_ids)out.last_hidden_state.shape #torch.Size([16, 512, 768]) #16一批数据有16个 #512一个句子的长度 #768yincan#torch.Size([16, 512, 768])out.last_hidden_state[:, 0].shape #获取cls特殊词的输出结果#torch.Size([16, 768]) 5  定义下游任务¶ class Model(torch.nn.Module):def __init__(self, pretrained_model):super().__init__()#预训练模型层self.pretrained_model pretrained_model#输出层全连接层#768:表示将上一层预训练模型层768个的输出结果作为全连接层的输入数据#2表示二分类问题就会有两个输出结果self.fc torch.nn.Linear(768, 2)#前向传播def forward(self, input_ids, attention_mask, token_type_ids):with torch.no_grad():out pretrained(input_idsinput_ids, attention_maskattention_mask, token_type_idstoken_type_ids)#在Bert中获取cls特殊词的输出结果来做分类任务out self.fc(out.last_hidden_state[:, 0])out.softmax(dim1)return out#声明模型 model Model(pretrained) #创建模型输入参数 model(input_idsinput_ids, attention_maskattention_mask, token_type_idstoken_type_ids).shape#torch.Size([16, 2]) 16个句子对2个分类结果 torch.Size([16, 2])  torch.cuda.is_available() True #设置设备 device torch.device(cuda:0 if torch.cuda.is_available() else cpu) device device(typecuda, index0) 6  训练  # AdamW 梯度下降的优化算法 在Adam的基础上稍微改进了一点 from transformers import AdamW #训练 optimizer AdamW(model.parameters(), lr5e-4) #设置优化器 #声明损失函数 loss torch.nn.CrossEntropyLoss()#建模 model Model(pretrained) #模型训练 model.train() #将模型传到设备上 model.to(device) for i, (input_ids, attention_mask, token_type_ids, labels) in enumerate(loader):#把传入的数据都传到设备上input_ids input_ids.to(device)attention_mask attention_mask.to(device)token_type_ids token_type_ids.to(device)labels labels.to(device)out model(input_idsinput_ids, attention_maskattention_mask, token_type_idstoken_type_ids)#计算损失函数l loss(out, labels) #out预测值 labels真实值#用损失函数来反向传播l.backward()#梯度更新optimizer.step()#梯度清零optimizer.zero_grad()#每隔5次计算一下准确率if i % 5 0:out out.argmax(dim1) #计算预测值#计算准确率accuracy (out labels).sum().item() / len(labels) #item()是拿到求和之后的数字print(i, l.item(), accuracy)if i 100:break 0 0.6882429718971252 0.5 5 0.7822732329368591 0.3125 10 0.7996063828468323 0.25 15 0.7967076301574707 0.3125 20 0.839418888092041 0.3125 25 0.6795901656150818 0.5625 30 0.7707732319831848 0.3125 35 0.6784831285476685 0.4375 40 0.728607177734375 0.375 45 0.7425007224082947 0.375 50 0.6188052892684937 0.5625 55 0.7185056805610657 0.375 60 0.8377469778060913 0.1875 65 0.7717736959457397 0.3125 70 0.7421607375144958 0.4375 75 0.7337921857833862 0.375 80 0.8023619651794434 0.3125 85 0.7294195890426636 0.5625 90 0.7909258008003235 0.3125 95 0.7105788588523865 0.4375 100 0.7786014676094055 0.5 7  测试  model.eval()用于将模型设置为评估模式。‌ 在评估模式下模型将关闭一些在训练过程中使用的特性如‌Dropout和BatchNorm层的训练模式以确保模型在推理时能够给出准确的结果。使用model.eval()可以帮助我们更好地评估模型的性能并发现潜在的问题。  def test():model.eval()correct 0total 0loader_test torch.utils.data.DataLoader(dataset Dataset(validation),batch_size 32,collate_fncollate_fn,shuffleTrue,drop_lastTrue)for i, (input_ids, attention_mask, token_type_ids, labels) in enumerate(loader_test):#输入的数据传入到设备上input_ids input_ids.to(device)attention_mask attention_mask.to(device)token_type_ids token_type_ids.to(device)labels labels.to(device)if i 5:breakprint(i)with torch.no_grad():out model(input_idsinput_ids, attention_maskattention_mask, token_type_idstoken_type_ids)out out.argmax(dim1)correct (outlabels).sum().item()total len(labels)print(correct / total) test() 0 1 2 3 4 0.40625
http://www.dnsts.com.cn/news/171055.html

相关文章:

  • 龙溪营销型网站制作如何注册企业
  • 做网站的软件是哪个桂林市工程建设项目招标网站
  • 深圳服装网站建设智慧旅游网站建设方案
  • 网站模板下载带后台网站反链暴增怎么回事
  • 网站建设市场多大脉脉用的什么技术做网站
  • 阳光市往房和城乡规划建设局网站网站制作的困难和解决方案
  • 中国免费最好用建站cms办公室电脑局域网组建
  • 江苏省城乡与建设厅网站期末网页设计学生作业代码
  • 网站反链有好处吗网网站站建建站站
  • 设计本官方网站 网络服务网络管理员网址
  • 旅游网络营销如何做seo手机搜索快速排名
  • 阜阳手机网站制作医院网站可信认证必须做吗
  • 电子商务网站设计的书中心网站建设方法
  • 网站运营需要哪些资质wordpress搜站点网络中断
  • 青岛做网站苏州市建设局网站地址
  • 企业门户网站的安全性企业解决方案参考网站
  • 网站建设初学软件短视频平台
  • 企业网站趋势资阳优化团队平台
  • php中英文企业网站免费的黄冈 投放平台有哪些
  • 郑州微信网站开发第一次做网站
  • 做门窗接活的网站c 开发网站开发
  • 重庆市住建厅网站河南搜索引擎推广价格
  • 网站psd设计稿个人网站快速备案
  • 单页手机网站源码临夏州建设网站
  • 免费房屋建设图纸网站有哪些wordpress文章刷新
  • 中国建筑土木建设有限公司网站开发利用水资源
  • 如何通过html做网站做网站准备什么问题
  • 小网站下载渠道有哪些做网站买流量
  • 网站建站平台是什么电子商务网站建设的一般流程是
  • 个人印章在线制作网站网站正能量