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

iis8搭建网站比价网站怎么做

iis8搭建网站,比价网站怎么做,历下区百度seo,长沙关键词优化服务#x1f4dd;个人主页#x1f339;#xff1a;Eternity._ #x1f339;#x1f339;期待您的关注 #x1f339;#x1f339; ❀ WRN: 宽度残差网络 概述语义分类文本分类情感分类 实现原理 核心逻辑pre_deal.pytrain.pytest_demo.py 实现方式演示效果训练阶段测试阶… 个人主页Eternity._ 期待您的关注 ❀ WRN: 宽度残差网络 概述语义分类文本分类情感分类 实现原理 核心逻辑pre_deal.pytrain.pytest_demo.py 实现方式演示效果训练阶段测试阶段 概述 在之前的文章中我们介绍了BERT模型。BERT作为一种预训练语言模型它具有很好的兼容性能够运用在各种下游任务中本文的主要目的是利用数据集来对BERT进行训练从而实现一个语义分类的模型。 本文所涉及的所有资源的获取方式这里 语义分类 语义分类是自然语言处理任务中的一种包含文本分类、情感分析 文本分类 文本分类是指给定文本a将文本分类为n个类别中的一个或多个。常见的应用包括文本话题分类情感分类具体的分类方向有有二分类多分类和多标签分类。 文本分类可以采用传统机器学习方法贝叶斯svm等和深度学习方法fastTextTextCNN等实现。 举例而言对于一个对话数据集我们可以用1、2、3表示他们的话题如家庭、学校、工作等而文本分类的目的则是把这些文本的话题划分到给定的三种类别中。 情感分类 情感分析是自然语言处理中常见的场景比如商品评价等。通过情感分析可以挖掘产品在各个维度的优劣。情感分类其实也是一种特殊的文本分类只是他更聚焦于情感匹配词典。 举例而言情感分类可以用0/1表示负面评价/正面评价例子如下 0,不好的319房间有故臭味。要求换房说满了我是3月去的。在路上认识了一个上海人他说他退房前也住的319也是一股臭味。而且这个去不掉特别是晚上很浓。不知道是厕所的还是窗外的。服务一般门前有绿皮公交去莫高窟不过敦煌宾馆也有下次住敦煌宾馆。再也不住这个酒店了热水要放半个小时才有。 1,不错的酒店大堂和餐厅的环境都不错。但由于给我的是一间走廊尽头的房间所以房型看上去有点奇怪。客厅和卧室是连在一起的面积偏小。服务还算到位总的来说性价比还是不错的。本文将以情感二分类为例实现如何利用BERT进行语义分析。 实现原理 首先基于BERT预训练模型能将一个文本转换成向量作为模型的输入。 在BERT预训练模型的基础上新增一个全连接层将输入的向量通过训练转化成一个tensor作为输出其中这个tensor的维度则是需要分类的种类具体的值表示每个种类的概率。例如 [0.25,0.75] 指代的是有0.25的概率属于第一类有0.75的概率属于第二类因此理论输出结果是把该文本分为第二类。 核心逻辑 pre_deal.py import csv import random from datasets import load_datasetdef read_file(file_path):csv_reader csv.reader(open(file_path, encodingUTF-8))num 0data []for row in csv_reader:if num 0:num 1continuecomment_data [row[1], int(row[0])]if len(comment_data[0]) 500:textcomment_data[0]sub_texts, start, length [], 0, len(text)while start length:piecedata[text[start: start 500], comment_data[1]]data.append(piecedata)start 500else:data.append(comment_data)random.shuffle(data)return data对输入的csv文件进行处理其中我们默认csv文件的格式是[label,text]将用于训练的内容读取出来转化为numpy格式其中如果遇到有些文本过长超过模型的输入将其截断分为多个文本段来输入。在最后会通过shuffle函数进行打乱。 train.py train.py定义了几个函数用于训练。 首先是Bertmodel类定义了基于Bert的训练模型 class Bertmodel(nn.Module):def __init__(self, output_dim, model_path):super(Bertmodel, self).__init__()# 导入bert模型self.bert BertModel.from_pretrained(model_path)# 外接全连接层self.layer1 nn.Linear(768, output_dim)def forward(self, tokens):res self.bert(**tokens)res self.layer1(res[1])res res.softmax(dim1)return res该模型由Bert和一个全连接层组成最后经过softmax激活函数。 其次是一个评估函数用来计算模型结果的准确性 def evaluate(net, comments_data, labels_data, device, tokenizer):ans 0 # 输出结果i 0step 8 # 每轮一次读取多少条数据tot len(comments_data)while i tot:print(i)comments comments_data[i: min(i step, tot)]tokens_X tokenizer(comments, paddingTrue, truncationTrue, return_tensorspt).to(devicedevice)res net(tokens_X) # 获得到预测结果y torch.tensor(labels_data[i: min(i step, tot)]).reshape(-1).to(devicedevice)ans (res.argmax(axis1) y).sum()i stepreturn ans / tot 原理就是将文本转化为tokens输入给模型而后利用返回的结果计算准确性 下面展示了开始训练的主函数在训练的过程中进行后向传播储存checkpoints模型 def training(net, tokenizer, loss, optimizer, train_comments, train_labels, test_comments, test_labels,device, epochs):max_acc 0.5 # 初始化模型最大精度为0.5for epoch in tqdm(range(epochs)):step 8i, sum_loss 0, 0totlen(train_comments)while i tot:comments train_comments[i: min(i step, tot)]tokens_X tokenizer(comments, paddingTrue, truncationTrue, return_tensorspt).to(devicedevice)res net(tokens_X)y torch.tensor(train_labels[i: min(i step, len(train_comments))]).reshape(-1).to(devicedevice)optimizer.zero_grad() # 清空梯度l loss(res, y) # 计算损失l.backward() # 后向传播optimizer.step() # 更新梯度sum_loss l.detach() # 累加损失i steptrain_acc evaluate(net, train_comments, train_labels)test_acc evaluate(net, test_comments, test_labels)print(\n--epoch, epoch 1, \t--loss:, sum_loss / (len(train_comments) / 8), \t--train_acc:, train_acc,\t--test_acc, test_acc)# 保存模型参数并重设最大值if test_acc max_acc:# 更新历史最大精确度max_acc test_acc# 保存模型max_acc test_acctorch.save({epoch: epoch,state_dict: net.state_dict(),optimizer: optimizer.state_dict()}, model/checkpoint_net.pth)训练结果表示如下 --epoch 0 --train_acc: tensor(0.6525, devicecuda:1) --test_acc tensor(0.6572, devicecuda:1)0%| | 0/20 [00:00?, ?it/s]5%|▌ | 1/20 [01:4834:28, 108.88s/it]10%|█ | 2/20 [03:3832:43, 109.10s/it]15%|█▌ | 3/20 [05:2730:56, 109.20s/it]20%|██ | 4/20 [07:1529:02, 108.93s/it]25%|██▌ | 5/20 [09:0627:23, 109.58s/it]30%|███ | 6/20 [10:5525:29, 109.26s/it]35%|███▌ | 7/20 [12:4423:40, 109.28s/it]40%|████ | 8/20 [14:3321:51, 109.29s/it]45%|████▌ | 9/20 [16:2320:04, 109.49s/it]50%|█████ | 10/20 [18:1318:15, 109.59s/it]55%|█████▌ | 11/20 [20:0316:27, 109.72s/it]60%|██████ | 12/20 [21:5214:35, 109.45s/it]65%|██████▌ | 13/20 [23:4112:45, 109.35s/it]70%|███████ | 14/20 [25:3010:54, 109.14s/it]75%|███████▌ | 15/20 [27:1909:05, 109.03s/it]80%|████████ | 16/20 [29:0707:15, 108.84s/it]85%|████████▌ | 17/20 [30:5605:26, 108.86s/it]90%|█████████ | 18/20 [32:4403:37, 108.75s/it]95%|█████████▌| 19/20 [34:3301:48, 108.73s/it] 100%|██████████| 20/20 [36:2200:00, 108.71s/it] 100%|██████████| 20/20 [36:2200:00, 109.11s/it]--epoch 1 --loss: tensor(1.2426, devicecuda:1) --train_acc: tensor(0.6759, devicecuda:1) --test_acc tensor(0.6789, devicecuda:1)--epoch 2 --loss: tensor(1.0588, devicecuda:1) --train_acc: tensor(0.8800, devicecuda:1) --test_acc tensor(0.8708, devicecuda:1)--epoch 3 --loss: tensor(0.8543, devicecuda:1) --train_acc: tensor(0.8988, devicecuda:1) --test_acc tensor(0.8887, devicecuda:1)--epoch 4 --loss: tensor(0.8208, devicecuda:1) --train_acc: tensor(0.9111, devicecuda:1) --test_acc tensor(0.8990, devicecuda:1)--epoch 5 --loss: tensor(0.8024, devicecuda:1) --train_acc: tensor(0.9206, devicecuda:1) --test_acc tensor(0.9028, devicecuda:1)--epoch 6 --loss: tensor(0.7882, devicecuda:1) --train_acc: tensor(0.9227, devicecuda:1) --test_acc tensor(0.9024, devicecuda:1)--epoch 7 --loss: tensor(0.7749, devicecuda:1) --train_acc: tensor(0.9288, devicecuda:1) --test_acc tensor(0.9036, devicecuda:1)--epoch 8 --loss: tensor(0.7632, devicecuda:1) --train_acc: tensor(0.9352, devicecuda:1) --test_acc tensor(0.9061, devicecuda:1)--epoch 9 --loss: tensor(0.7524, devicecuda:1) --train_acc: tensor(0.9421, devicecuda:1) --test_acc tensor(0.9090, devicecuda:1)--epoch 10 --loss: tensor(0.7445, devicecuda:1) --train_acc: tensor(0.9443, devicecuda:1) --test_acc tensor(0.9103, devicecuda:1)--epoch 11 --loss: tensor(0.7397, devicecuda:1) --train_acc: tensor(0.9480, devicecuda:1) --test_acc tensor(0.9128, devicecuda:1)--epoch 12 --loss: tensor(0.7321, devicecuda:1) --train_acc: tensor(0.9505, devicecuda:1) --test_acc tensor(0.9123, devicecuda:1)--epoch 13 --loss: tensor(0.7272, devicecuda:1) --train_acc: tensor(0.9533, devicecuda:1) --test_acc tensor(0.9140, devicecuda:1)--epoch 14 --loss: tensor(0.7256, devicecuda:1) --train_acc: tensor(0.9532, devicecuda:1) --test_acc tensor(0.9111, devicecuda:1)--epoch 15 --loss: tensor(0.7186, devicecuda:1) --train_acc: tensor(0.9573, devicecuda:1) --test_acc tensor(0.9123, devicecuda:1)--epoch 16 --loss: tensor(0.7135, devicecuda:1) --train_acc: tensor(0.9592, devicecuda:1) --test_acc tensor(0.9136, devicecuda:1)--epoch 17 --loss: tensor(0.7103, devicecuda:1) --train_acc: tensor(0.9601, devicecuda:1) --test_acc tensor(0.9128, devicecuda:1)--epoch 18 --loss: tensor(0.7091, devicecuda:1) --train_acc: tensor(0.9590, devicecuda:1) --test_acc tensor(0.9086, devicecuda:1)--epoch 19 --loss: tensor(0.7084, devicecuda:1) --train_acc: tensor(0.9626, devicecuda:1) --test_acc tensor(0.9123, devicecuda:1)--epoch 20 --loss: tensor(0.7038, devicecuda:1) --train_acc: tensor(0.9628, devicecuda:1) --test_acc tensor(0.9107, devicecuda:1) 最终训练结果在训练集上达到了96.28%的准确率在测试集上达到了91.07%的准确率 test_demo.py 这个函数提供了一个调用我们储存的checkpoint模型来进行预测的方式将input转化为berttokens而后输入给模型返回输出结果。 input_text[这里环境很好风光美丽下次还会再来的。] Bert_model_path xxxx output_pathxxxx device torch.device(cpu) checkpoint torch.load(output_path,map_locationcpu)model Bertmodel(output_dim2,model_pathBert_model_path) model.load_state_dict(checkpoint,False) # print(model) tokenizer BertTokenizer.from_pretrained(Bert_model_path,model_max_length512)tokens_X tokenizer(input_text, paddingTrue, truncationTrue, return_tensorspt).to(devicecpu) model.eval() outputmodel(tokens_X) print(output) out torch.unsqueeze(output.argmax(dim1), dim1) result out.numpy() print(result) if result[0][0]1:print(positive) else:print(negative) 实现方式演示效果 训练阶段 首先找到能够拿来训练的数据运行pre_deal.py进行预处理而后可以在main.py修改模型的相关参数运行main.py开始训练。 这个过程可能会收到硬件条件的影响推荐使用cuda进行训练。如果实在训练不了可以直接调用附件中对应的训练好的模型来进行预测。 测试阶段 运行test_demo.py测试输入文本的分类结果 输入 input_text[这里环境很好风光美丽下次还会再来的。]输出 tensor([[0.3191, 0.6809]], grad_fnSoftmaxBackward0) [[1]] positive得出这句话的情感分类是positive正面 编程未来从这里启航解锁无限创意让每一行代码都成为你通往成功的阶梯帮助更多人欣赏与学习 更多内容详见这里
http://www.hkea.cn/news/14269048/

相关文章:

  • 滨州北京网站建设网站建设行业论坛
  • 中国建设银行官网站电话wordpress 分类树
  • 网站开发外包 验收邯郸哪里做网站好
  • 创建个人网站多少钱如何利用淘宝建设网站挣钱
  • 英文网站如何做关键词南昌市新农村建设网站
  • 怎么做网站的跳转网站建设商务代表故事
  • 深圳市住建设局网站免费个人网站模版下载
  • 智能家居网站建设方案做网站赚钱 2017
  • wordpress 大站滁州做网站的
  • 源码之家 网站模板济南微信网站建设
  • 徐汇做网站什么叫网站地图
  • 购物手机网站建设国际域名的外贸网站
  • 昭通昭阳区城乡建设管理局网站山东省住房和城乡建设厅网站定额站
  • 长沙旅游网站开发pc网站建设企业
  • 营销型企业网站类型wordpress 菜单管理系统
  • 一级做a免费体验区不用下载网站怎样做农产品交易平台网站
  • 温州 做网站商务网站规划与建设心得
  • 访问中国建设银行官方网站工作手机微信管理系统
  • 手机网站跟pc网站有什么不同百度图片搜索入口
  • wordpress网站搬建立大型网站
  • 局域网 手机网站建设设计一个个人网站的基本步骤
  • 建设部网站投标保证金网站设计师岗位职责
  • 深圳住房建设厅网站首页承建网站
  • 网站新闻置顶怎么做wordpress页面如何显示分类目录
  • 哪个网站做律师推广广州哪里有外贸网站
  • 微信手机网站源码开发公司各部门职责
  • 杭州品牌网站设计制作公司wordpress后台教程网
  • 海西州公司网站建设服装设计手绘
  • iis发布网站页面出问题怎么去推广一个app
  • wordpress 后台加入链接后_网站显示是标签_不是链接福建龙岩昨天发生的新闻