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

中国外协加工网免费成都网站优化方式

中国外协加工网免费,成都网站优化方式,成都的网站建设,北京网络公司哪家最好介绍#xff1a; 欢迎来到本篇文章#xff01;在这里#xff0c;我们将探讨一个常见而重要的自然语言处理任务——文本分类。具体而言#xff0c;我们将关注情感分析任务#xff0c;即通过分析电影评论的情感来判断评论是正面的、负面的。 展示#xff1a; 训练展示如下…介绍 欢迎来到本篇文章在这里我们将探讨一个常见而重要的自然语言处理任务——文本分类。具体而言我们将关注情感分析任务即通过分析电影评论的情感来判断评论是正面的、负面的。 展示 训练展示如下 实际使用如下 实现方式 选择PyTorch作为深度学习框架使用电影评论IMDB数据集并结合torchtext对数据进行预处理。 环境 WindowsAnaconda 重要库版本信息 torch1.8.2cu102 torchaudio0.8.2 torchdata0.7.1 torchtext0.9.2 torchvision0.9.2cu102实现思路 1、数据集 本次使用的是IMDB数据集IMDB是一个含有50000条关于电影评论的数据集 数据如下 2、数据加载与预处理 使用torchtext加载IMDB数据集并对数据集进行划分 具体划分如下 TEXT data.Field(tokenizespacy, tokenizer_languageen_core_web_sm) LABEL data.LabelField(dtypetorch.float) # Load the IMDB dataset train_data, test_data datasets.IMDB.splits(TEXT, LABEL)创建一个 Field 对象用于处理文本数据。同时使用spacy分词器对文本进行分词由于IMDB是英文的所以使用en_core_web_sm语言模型。 创建一个 LabelField 对象用于处理标签数据。设置dtype 参数为 torch.float表示标签的数据类型为浮点型。 使用 datasets.IMDB.splits 方法加载 IMDB 数据集并将文本字段 TEXT 和标签字段 LABEL 传递给该方法。返回的 train_data 和 test_data 包含了 IMDB 数据集的训练和测试部分。 下面是train_data的输出 3、构建词汇表与加载预训练词向量 TEXT.build_vocab(train_data,max_size25000,vectorsglove.6B.100d,unk_inittorch.Tensor.normal_) LABEL.build_vocab(train_data)train_data:表示使用train_data中数据构建词汇表 max_size:限制词汇表的大小为 25000 vectors“glove.6B.100d”:表示使用预训练的 GloVe 词向量其中 “glove.6B.100d” 指的是包含 100 维向量的 6B 版 GloVe。 unk_inittorch.Tensor.normal_ 表示指定未知单词UNK的初始化方式这里使用正态分布进行初始化。 LABEL.build_vocab(train_data):表示对标签进行类似的操作构建标签的词汇表 train_iterator, valid_iterator, test_iterator data.BucketIterator.splits( (train_data, valid_data, test_data), batch_sizeBATCH_SIZE, devicedevice) 使用data.BucketIterator.splits 来创建数据加载器包括训练、验证和测试集的迭代器。这将确保你能够方便地以批量的形式获取数据进行训练和评估。 4、定义神经网络 这里的网络定义比较简单主要采用在词嵌入层(embedding)后接一个全连接层的方式完成对文本数据的分类。 具体如下 class NetWork(nn.Module):def __init__(self,vocab_size,embedding_dim,output_dim,pad_idx):super(NetWork,self).__init__()self.embedding nn.Embedding(vocab_size,embedding_dim,padding_idxpad_idx)self.fc nn.Linear(embedding_dim,output_dim)self.dropout nn.Dropout(0.5)self.relu nn.ReLU()def forward(self,x):embedded self.embedding(x)embedded embedded.permute(1,0,2) pooled F.avg_pool2d(embedded, (embedded.shape[1], 1)).squeeze(1)pooled self.relu(pooled)pooled self.dropout(pooled)output self.fc(pooled)return output5、模型初始化 vocab_size len(TEXT.vocab) embedding_dim 100 output 1 pad_idx TEXT.vocab.stoi[TEXT.pad_token] model NetWork(vocab_size,embedding_dim,output,pad_idx) pretrained_embeddings TEXT.vocab.vectors model.embedding.weight.data.copy_(pretrained_embeddings)定义模型的超参数包括词汇表大小vocab_size、词向量维度embedding_dim、输出维度output在这个任务中是1因为是二元分类所以使用1以及 PAD 标记的索引pad_idx 之后需要将预训练的词向量加载到嵌入层的权重中。TEXT.vocab.vectors 包含了词汇表中每个单词的预训练词向量然后通过 copy_ 方法将这些词向量复制到模型的嵌入层权重中对网络进行初始化。这样做确保了模型的初始化状态良好。 6、训练模型 total_loss 0train_acc 0 model.train() for batch in train_iterator:optimizer.zero_grad()preds model(batch.text).squeeze(1)loss criterion(preds,batch.label)total_loss loss.item()batch_acc (torch.round(torch.sigmoid(preds)) batch.label).sum().item()train_acc batch_accloss.backward()optimizer.step()average_loss total_loss / len(train_iterator)train_acc / len(train_iterator.dataset)optimizer.zero_grad()表示将模型参数的梯度清零以准备接收新的梯度。 preds model(batch.text).squeeze(1):表示一次前向传播的过程由于model输出的是torch.tensor(batch_size,1)所以使用squeeze(1)给其中的1维度数据去除以匹配标签张量的形状 criterion(preds,batch.label):定义的损失函数 criterion 计算预测值 preds 与真实标签 batch.label 之间的损失 (torch.round(torch.sigmoid(preds)) batch.label).sum().item(): 通过比较模型的预测值与真实标签计算当前批次的准确率并将其累加到 train_acc 中 后面的就是进行反向传播更新参数还有就是计算loss和train_acc的值了 7、模型评估 model.eval()valid_loss 0valid_acc 0best_valid_acc 0with torch.no_grad():for batch in valid_iterator:preds model(batch.text).squeeze(1)loss criterion(preds,batch.label)valid_loss loss.item()batch_acc ((torch.round(torch.sigmoid(preds)) batch.label).sum().item())valid_acc batch_acc和训练模型的类似这里就不解释了 8、保存模型 这里一共使用了两种保存模型的方式: torch.save(model, model.pth) torch.save(model.state_dict(),model.pth)第一种方式叫做模型的全量保存 第二种方式叫做模型的参数保存 全量保存是保存了整个模型包括模型的结构、参数、优化器状态等信息 参数量保存是保存了模型的参数state_dict不包括模型的结构 9、测试模型 测试模型的基本思路 加载训练保存的模型、对待推理的文本进行预处理、将文本数据加载给模型进行推理 加载模型 saved_model_path model.pth saved_model torch.load(saved_model_path)输入文本 input_text “Great service! The staff was very friendly and helpful.” 文本进行处理: tokenizer get_tokenizer(spacy, languageen_core_web_sm) tokenized_text tokenizer(input_text) indexed_text [TEXT.vocab.stoi[token] for token in tokenized_text] tensor_text torch.LongTensor(indexed_text).unsqueeze(1).to(device)模型推理: saved_model.eval() with torch.no_grad():output saved_model(tensor_text).squeeze(1)prediction torch.round(torch.sigmoid(output)).item()probability torch.sigmoid(output).item()由于笔者能力有限所以在描述的过程中难免会有不准确的地方还请多多包含 更多NLP和CV文章以及完整代码请到陶陶name获取。
http://www.w-s-a.com/news/504703/

相关文章:

  • 功能型网站响应式网站原理
  • 聊城建设网站骨干校 建设网站
  • 网站建设与管理是干嘛的中国新闻社是什么单位
  • 帮别人做视频剪辑的网站传业做微采商城网站
  • 设计一个网站开发方案宣传片制作企业
  • 新网站收录多少关键词免费一键网站
  • 网页制作与网站建设 在线作业手表网站制作照片
  • 电商网站开发技术与维护重庆建筑工程交易信息网
  • 人和马做的网站线上营销推广方式
  • 青海教育厅门户网站有赞商城
  • 网站建设多语种自动翻译插件wordpress谷歌翻译插件
  • 泰安高级网站建设推广wordpress教程 好看
  • 我自己的网站怎么做关键词优化泰安网站建设dxkjw
  • 平面设计做画册用网站泰州seo平台
  • 申请一个域名后怎么做网站evernote wordpress
  • 网站左侧导航栏设计网站开发后台数据怎么来
  • 临西做网站报价网站建设需要写语句吗
  • 建设网站网站首页购物网站开发代码
  • 淘宝客怎么建立网站网站360优化
  • 安徽建海建设工程有限公司网站网站空间和域名价格
  • 农产品网站建设策划哪里有做枪网站的
  • 更改各网站企业信息怎么做张家港企业网站制作
  • 郑州网站建设咨询银川做网站哪家好
  • 微信网站 微信支付合肥seo排名收费
  • 织梦做的网站如何上线广东省广州市番禺区南村镇
  • 网站设计的导航栏怎么做太原有网站工程公司吗
  • 苏州虎丘区建设局网站如何在一个数据库做两个网站
  • 淘宝天猫优惠券网站建设费用腾讯邮箱企业邮箱登录
  • 深圳福田做网站公司海航科技网站建设
  • 网站降权查询wordpress更换文章背景色