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

做大型网站需要多少钱单页网站案例分析

做大型网站需要多少钱,单页网站案例分析,微信公众号 网站开发 2016,eclipse用来做网站前端目录 1--中文分类 1-1--使用预训练模型推理 1-2--基于预训练模型实现下游任务 2--中文填空 3--中文句子关系推断 1--中文分类 1-1--使用预训练模型推理 代码实例#xff1a; import torch from datasets import load_dataset from transformers import BertTokenizer,…目录 1--中文分类 1-1--使用预训练模型推理 1-2--基于预训练模型实现下游任务 2--中文填空 3--中文句子关系推断 1--中文分类 1-1--使用预训练模型推理 代码实例 import torch from datasets import load_dataset from transformers import BertTokenizer, BertModel# 定义全局分词工具 tokenizer BertTokenizer.from_pretrained(bert-base-chinese)# 定义数据集 class Dataset(torch.utils.data.Dataset):def __init__(self, split):self.dataset load_dataset(path lansinuote/ChnSentiCorp, split split) # 加载数据集def __len__(self):return len(self.dataset)def __getitem__(self, i):text self.dataset[i][text]label self.dataset[i][label]return text, label# 自定义数据的处理(加载)方式 def my_collate_fn(data): # data 的类型与 dataset 的返回值相同本例中dataset返回一个列表[text, label]# 根据dataset的返回结果取出对应的text和labelsents [i[0] for i in data]labels [i[1] for i in data]# 使用全局的分词工具进行编码data tokenizer.batch_encode_plus(batch_text_or_text_pairs sents,truncation True,padding max_length,max_length 500,return_tensors pt,return_length True)input_ids data[input_ids]attention_mask data[attention_mask]token_type_ids data[token_type_ids]labels torch.LongTensor(labels)return input_ids, attention_mask, token_type_ids, labelsdef main():dataset Dataset(train) # 初始化训练集# print(len(dataset), dataset[0])# 定义dataloaderloader torch.utils.data.DataLoader(dataset dataset,batch_size 16,collate_fn my_collate_fn,shuffle True,drop_last True)# 遍历dataloader加载数据for i, (input_ids, attention_mask, token_type_ids, labels) in enumerate(loader):breakprint(len(loader))print(input_ids.shape, attention_mask.shape, token_type_ids.shape, labels) # 打印一个样本# 加载预训练模型model BertModel.from_pretrained(bert-base-chinese)for param in model.parameters(): # 不进行梯度计算和反向传播param.requires_grad_(False)# 调用预训练模型推理一个样本 output model(input_ids input_ids, attention_mask attention_mask, token_type_ids token_type_ids)print(output.last_hidden_state.shape) # 打印最后一个隐层输出特征的维度if __name__ __main__:main()print(All done!) 输出结果 # dataloader单个样本 torch.Size([16, 500]) torch.Size([16, 500]) torch.Size([16, 500]) tensor([1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1]) # 最后一个隐层的输出特征: torch.Size([16, 500, 768])1-2--基于预训练模型实现下游任务 利用预训练 bert 模型最后一个隐层的[cls] token的特征进行中文分类 代码 import torch from datasets import load_dataset from transformers import BertTokenizer, BertModel, AdamW# 定义全局分词工具 tokenizer BertTokenizer.from_pretrained(bert-base-chinese)# 定义数据集 class Dataset(torch.utils.data.Dataset):def __init__(self, split):self.dataset load_dataset(path lansinuote/ChnSentiCorp, split split) # 加载数据集def __len__(self):return len(self.dataset)def __getitem__(self, i):text self.dataset[i][text]label self.dataset[i][label]return text, label# 自定义数据的处理(加载)方式 def my_collate_fn(data): # data 的类型与 dataset 的返回值相同本例中dataset返回一个列表[text, label]# 根据dataset的返回结果取出对应的text和labelsents [i[0] for i in data]labels [i[1] for i in data]# 使用全局的分词工具进行编码data tokenizer.batch_encode_plus(batch_text_or_text_pairs sents,truncation True,padding max_length,max_length 500,return_tensors pt,return_length True)input_ids data[input_ids]attention_mask data[attention_mask]token_type_ids data[token_type_ids]labels torch.LongTensor(labels)return input_ids, attention_mask, token_type_ids, labels# 定义下游任务模型 class Model(torch.nn.Module):def __init__(self):super().__init__()self.pretrained_model BertModel.from_pretrained(bert-base-chinese) # 加载预训练模型self.fc torch.nn.Linear(768, 2)# 固定预训练模型for param in self.pretrained_model.parameters():param.requires_grad Falsedef forward(self, input_ids, attention_mask, token_type_ids):with torch.no_grad():output self.pretrained_model(input_idsinput_ids,attention_maskattention_mask,token_type_idstoken_type_ids)output self.fc(output.last_hidden_state[:, 0]) # 利用最后一个隐层的[cls]token特征进行分类output output.softmax(dim1)return output# 定义测试函数 def test(model, dataset):model.eval()correct 0total 0# 定义加载测试集的dataloaderloader_test torch.utils.data.DataLoader(dataset dataset,batch_size 32,collate_fn my_collate_fn,shuffle True,drop_last True)for idx, (input_ids, attention_mask, token_type_ids, labels) in enumerate(loader_test):if idx 5: # 测试5个batchbreakprint(idx)with torch.no_grad():input_ids input_ids.cuda()attention_mask attention_mask.cuda()token_type_ids token_type_ids.cuda()labels labels.cuda()output model(input_idsinput_ids, attention_maskattention_mask, token_type_idstoken_type_ids)output output.argmax(dim1)correct (output labels).sum().item()total len(labels)print(Acc: , correct / total) # 打印5个batch的总体准确率def main():dataset Dataset(train) # 初始化训练集# print(len(dataset), dataset[0])# 定义dataloaderloader torch.utils.data.DataLoader(dataset dataset,batch_size 16,num_workers 8,collate_fn my_collate_fn,shuffle True,drop_last True)# 初始化模型model Model()model model.cuda() # 使用GPU# 初始化优化器和损失函数optimizer AdamW(model.parameters(), lr5e-4)criterion torch.nn.CrossEntropyLoss().cuda()# 训练模型model.train()for idx, (input_ids, attention_mask, token_type_ids, labels) in enumerate(loader): # 遍历加载数据input_ids input_ids.cuda()attention_mask attention_mask.cuda()token_type_ids token_type_ids.cuda()labels labels.cuda()output model(input_idsinput_ids, attention_maskattention_mask, token_type_idstoken_type_ids)loss criterion(output, labels)loss.backward()optimizer.step()optimizer.zero_grad()if idx % 5 0: # 每5个batch打印当前准确率和损失output output.argmax(dim1)accuracy (output labels).sum().item() / len(labels)print(idx, loss.item(), accuracy)if idx 300: # 使用300个batch进行训练break# 测试模型test(model, Dataset(validation))if __name__ __main__:main() 部分输出结果 ... 260 0.5995925664901733 0.75 265 0.3791050910949707 1.0 270 0.42692136764526367 0.9375 275 0.4765201210975647 0.875 280 0.4071955382823944 0.9375 285 0.4194560945034027 0.875 290 0.449373722076416 0.9375 295 0.38813596963882446 1.0 300 0.5164415240287781 0.875 Acc: 0.89375 2--中文填空 对训练数据的第15个词进行 mask 掉预测第15个词         利用 bert 模型提取特征对最后一个隐层的第15个token特征进行分类         分类用的是一个简单的线性层其维度为768, token.vocab_size其中token.vocab_sized的大小为21128即预测21128个词的分类分数再与真实标签进行损失计算 代码 import torch from datasets import load_dataset, load_from_disk from transformers import BertTokenizer, BertModel, AdamW# 定义全局分词工具 token BertTokenizer.from_pretrained(bert-base-chinese)# 定义数据集 class Dataset(torch.utils.data.Dataset):def __init__(self, split):dataset load_dataset(path lansinuote/ChnSentiCorp, split split)# dataset load_from_disk(./data/ChnSentiCorp)# dataset dataset[split]def f(data):return len(data[text]) 30self.dataset dataset.filter(f) # 筛选数据集def __len__(self):return len(self.dataset)def __getitem__(self, i):text self.dataset[i][text]return textdef collate_fn(data):# batch编码data token.batch_encode_plus(batch_text_or_text_pairs data,truncation True,padding max_length,max_length 30, # padding到30个词return_tensors pt, # 返回pytorch格式return_length True)input_ids data[input_ids]attention_mask data[attention_mask]token_type_ids data[token_type_ids]# 把第15个词固定替换为masklabels input_ids[:, 15].reshape(-1).clone() # 记录真实标签input_ids[:, 15] token.get_vocab()[token.mask_token]return input_ids, attention_mask, token_type_ids, labels# 定义下游任务模型 class Model(torch.nn.Module):def __init__(self):super().__init__()self.decoder torch.nn.Linear(768, token.vocab_size, biasFalse) # token.vocab_size为21128预测21128个词的分类分数self.bias torch.nn.Parameter(torch.zeros(token.vocab_size))self.decoder.bias self.biasself.pretrained BertModel.from_pretrained(bert-base-chinese)# 固定预训练模型for param in self.pretrained.parameters():param.requires_grad Falsedef forward(self, input_ids, attention_mask, token_type_ids):# 使用bert模型提取特征with torch.no_grad():output self.pretrained(input_idsinput_ids, attention_maskattention_mask, token_type_idstoken_type_ids)output self.decoder(output.last_hidden_state[:, 15])return output# 测试 def test(model):model.eval()correct 0total 0loader_test torch.utils.data.DataLoader(dataset Dataset(test), batch_size 32, collate_fn collate_fn, shuffle True, drop_last True)for idx, (input_ids, attention_mask, token_type_ids, labels) in enumerate(loader_test):input_ids input_ids.cuda()attention_mask attention_mask.cuda()token_type_ids token_type_ids.cuda()labels labels.cuda()if idx 15: # 测试15个batchbreakwith torch.no_grad():output model(input_idsinput_ids, attention_maskattention_mask, token_type_idstoken_type_ids)output output.argmax(dim1)correct (output labels).sum().item()total len(labels)print(token.decode(input_ids[0])) # 打印测试数据print(真实标签: , token.decode(labels[0]), 预测标签: , token.decode(labels[0]))print(Acc: , correct / total)def main():# 初始化训练集dataset Dataset(train)# 定义dataloaderloader torch.utils.data.DataLoader(dataset dataset,batch_size 16,collate_fn collate_fn,shuffle True,drop_last True)# 初始化模型model Model().cuda()# 训练optimizer AdamW(model.parameters(), lr5e-4)criterion torch.nn.CrossEntropyLoss().cuda()model.train()for epoch in range(5):for idx, (input_ids, attention_mask, token_type_ids, labels) in enumerate(loader):input_ids input_ids.cuda()attention_mask attention_mask.cuda()token_type_ids token_type_ids.cuda()labels labels.cuda()output model(input_idsinput_ids, attention_maskattention_mask, token_type_idstoken_type_ids)loss criterion(output, labels)loss.backward()optimizer.step()optimizer.zero_grad()if idx % 50 0:output output.argmax(dim1)accuracy (output labels).sum().item() / len(labels)print(epoch, idx, loss.item(), accuracy)# 测试模型 test(model)if __name__ __main__:main() 部分输出结果 4 300 0.633719801902771 1.0 4 350 0.8078413605690002 0.75 4 400 0.7607380747795105 0.75 4 450 1.2219955921173096 0.875 4 500 0.7912384867668152 0.8125 4 550 0.4526982307434082 0.875 Filter: 100%|██████████████████████████████████████████████████| 1200/1200 [00:0000:00, 152215.71 examples/s] [CLS] 1. 有 急 事 出 去 要 们 童 叫 出 租 [MASK] 他 们 就 叫 酒 店 里 的 黑 车 价 [SEP] 真实标签: 车 预测标签: 车 [CLS] 酒 店 特 别 提 示 [ 2008 / 02 / 29 - 2008 [MASK] 08 / 30 ] 酒 店 对 面 立 交 桥 改 造 [SEP] 真实标签: / 预测标签: / [CLS] 不 知 大 陆 观 众 有 多 少 看 过 台 湾 的 [MASK] 生 活 智 慧 王 [UNK] 节 目 里 面 介 绍 [SEP] 真实标签: [ U N K ] 预测标签: [ U N K ] [CLS] 性 价 比 极 高 我 在 苏 宁 买 4699 [MASK] 东 才 4399. 功 能 很 全 用 起 来 很 [SEP] 真实标签: 东 预测标签: 东 [CLS] 服 务 态 度 极 其 差 前 台 接 待 好 象 [MASK] 有 受 过 培 训 连 基 本 的 礼 貌 都 [SEP] 真实标签: 没 预测标签: 没 [CLS] 自 己 马 上 就 有 宝 宝 了 期 待 着 宝 [MASK] 降 临 人 世 所 以 提 前 看 看 家 教 [SEP] 真实标签: 宝 预测标签: 宝 [CLS] 《 阴 阳 师. 晴 明 取 瘤 》 这 本 书 买 [MASK] 来 放 在 书 架 上 好 段 日 子 我 都 [SEP] 真实标签: 回 预测标签: 回 [CLS] 出 差 入 住 的 酒 店, 订 了 个 三 人 间 [MASK] 房 间 没 空 调, 冷 得 要 死, 而 且 [SEP] 真实标签: . 预测标签: . [CLS] 2007 年 9 月 11 日 256 元 住 普 通 标 间 [MASK] 街 其 它 房 型 已 无 。 我 是 喜 [SEP] 真实标签: 临 预测标签: 临 [CLS] 1 、 作 为 便 携 本 重 了 一 点 厚 [MASK] 一 些 2 、 屏 幕 确 实 太 小 了 上 [SEP] 真实标签: 了 预测标签: 了 [CLS] 官 方 给 的 [UNK] 碟 子 和 驱 动 真 是 让 人 [MASK] 郁 闷 拿 到 还 是 自 己 重 新 装 的 [SEP] 真实标签: 很 预测标签: 很 [CLS] 外 观 设 计 别 出 心 裁 配 置 均 衡 性 [MASK] 比 高 比 [UNK] 系 列 又 有 进 步 。 散 [SEP] 真实标签: 价 预测标签: 价 [CLS] 酒 店 的 位 置 很 好, 距 离 火 车 站 非 [MASK] 近. 总 提 感 觉 酒 店 的 性 价 比 不 [SEP] 真实标签: 常 预测标签: 常 [CLS] 虽 然 只 是 刚 刚 开 始 阅 读 但 是 已 [MASK] 给 我 带 来 很 多 思 想 冲 击 了 。 一 [SEP] 真实标签: 经 预测标签: 经 [CLS] 于 丹 的 论 语 心 得 简 直 就 [MASK] 胡 说 八 道 。 除 了 《 论 语 》 之 外 [SEP] 真实标签: 是 预测标签: 是 Acc: 0.7229166666666667 3--中文句子关系推断 代码 import torch import random from datasets import load_dataset, load_from_disk from transformers import BertTokenizer, BertModel, AdamW# 定义全局分词工具 token BertTokenizer.from_pretrained(bert-base-chinese)# 定义数据集 class Dataset(torch.utils.data.Dataset):def __init__(self, split):# dataset load_dataset(pathlansinuote/ChnSentiCorp, splitsplit)dataset load_from_disk(./data/ChnSentiCorp)dataset dataset[split]def f(data):return len(data[text]) 40self.dataset dataset.filter(f)def __len__(self):return len(self.dataset)def __getitem__(self, i):text self.dataset[i][text]# 切分一句话为前半句和后半句sentence1 text[:20]sentence2 text[20:40]label 0 # label为0表示为同一句# 有一半的概率把后半句替换为一句无关的话if random.randint(0, 1) 0:j random.randint(0, len(self.dataset) - 1)sentence2 self.dataset[j][text][20:40]label 1return sentence1, sentence2, labeldef collate_fn(data):sents [i[:2] for i in data]labels [i[2] for i in data]# 编码data token.batch_encode_plus(batch_text_or_text_pairs sents,truncation True,padding max_length,max_length 45,return_tensors pt,return_length True,add_special_tokens True)input_ids data[input_ids]attention_mask data[attention_mask]token_type_ids data[token_type_ids]labels torch.LongTensor(labels)return input_ids, attention_mask, token_type_ids, labels# 定义下游任务模型 class Model(torch.nn.Module):def __init__(self):super().__init__()self.fc torch.nn.Linear(768, 2) # 二分类self.pretrained BertModel.from_pretrained(bert-base-chinese)# 固定预训练模型for param in self.pretrained.parameters():param.requires_grad Falsedef forward(self, input_ids, attention_mask, token_type_ids):with torch.no_grad():output self.pretrained(input_ids input_ids, attention_mask attention_mask, token_type_ids token_type_ids)output self.fc(output.last_hidden_state[:, 0])output output.softmax(dim1)return outputdef main():model Model().cuda()optimizer AdamW(model.parameters(), lr5e-4)criterion torch.nn.CrossEntropyLoss().cuda() # dataloaderloader torch.utils.data.DataLoader(dataset Dataset(train),batch_size 8,collate_fn collate_fn,shuffle True,drop_last True) # 训练model.train()for idx, (input_ids, attention_mask, token_type_ids, labels) in enumerate(loader):input_ids input_ids.cuda()attention_mask attention_mask.cuda()token_type_ids token_type_ids.cuda()labels labels.cuda()output model(input_idsinput_ids, attention_maskattention_mask, token_type_idstoken_type_ids)loss criterion(output, labels)loss.backward()optimizer.step()optimizer.zero_grad()if idx % 5 0: # 每5个batch打印output output.argmax(dim1)accuracy (output labels).sum().item() / len(labels)print(idx, loss.item(), accuracy)if idx 300: # 训练300个batchbreak# 测试test(model)# 定义测试函数 def test(model):model.eval()correct 0total 0loader_test torch.utils.data.DataLoader(dataset Dataset(test),batch_size 32,collate_fn collate_fn,shuffle True,drop_last True)for idx, (input_ids, attention_mask, token_type_ids, labels) in enumerate(loader_test):input_ids input_ids.cuda()attention_mask attention_mask.cuda()token_type_ids token_type_ids.cuda()labels labels.cuda()if idx 5: # 测试5个batchbreakwith torch.no_grad():output model(input_idsinput_ids, attention_maskattention_mask, token_type_idstoken_type_ids)pred output.argmax(dim1)correct (pred labels).sum().item()total len(labels)print(acc:, correct / total)if __name__ __main__:main() 部分运行结果 240 0.39283961057662964 0.875 245 0.7069525122642517 0.5 250 0.41953372955322266 0.875 255 0.5032698512077332 0.75 260 0.6422066688537598 0.75 265 0.5467717051506042 0.75 270 0.4452913701534271 0.875 275 0.5998544096946716 0.625 280 0.4301206171512604 0.875 285 0.5177156329154968 0.75 290 0.3987200856208801 0.875 295 0.33609679341316223 1.0 300 0.3723036050796509 0.875 acc: 0.925
http://www.pierceye.com/news/65178/

相关文章:

  • 余姚市城乡建设局网站爱心互助网站开发
  • 给朋友网站做宣传怎么写成都网络推广
  • vs做网站登录界面响应式网站概况
  • 网站开发实验的总结东莞有哪些大公司
  • 免费微网站有哪些网站有访问量 为什么没有询盘
  • 网站title 在哪里设置wordpress看不到表格
  • 西昌建设招聘信息网站公司门户网站源码
  • 合肥建站软件小工具 wordpress
  • 用python做网站的公司电子商务网站建设方案书的总结
  • 精品网站建设比较好鞍山网民
  • 贵州公司网站建设比选公示数字营销seo
  • 宜昌网站制作公司排名周口 网站建设
  • 旅游网站建设规划报告怎么写百度推广一级代理商名单
  • 设计优秀网站作品视频制作软件电脑版
  • 建网站的注意事项域名 阿里云
  • 湖北微网站建设多少钱wordpress新建用户
  • 网站可以更换域名吗wordpress注册登录修改
  • 网站开发外包报价做亚马逊网站一般发什么快递公司
  • 山西省住房建设厅网站下载网站的页面设计
  • 让别人访问自己做的网站动漫设计与制作培训学院
  • 河南app网站建设一个营销型网站模板
  • 成品网站整套源码郑州同济医院口碑怎样
  • 一叶子电子商务网站建设策划书市场监督管理局电话号码
  • 为离职员工做的网站wordpress 免费 博客主题
  • 学生做义工网站杭州免费自助建站模板
  • 肇庆东莞网站建设百度收录查询接口
  • 广州品牌网站开发免费做网站收录的
  • 网站建设策划框架30g月流量网站
  • 广 做网站蓝光电影下载太原网站建设托管
  • 网站建设 设备app开发公司选择技巧