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

企业网站和信息化建设金蝶网站弹窗怎么做

企业网站和信息化建设金蝶,网站弹窗怎么做,英国做网站的人,百度应用宝❤️觉得内容不错的话#xff0c;欢迎点赞收藏加关注#x1f60a;#x1f60a;#x1f60a;#xff0c;后续会继续输入更多优质内容❤️#x1f449;有问题欢迎大家加关注私戳或者评论#xff08;包括但不限于NLP算法相关#xff0c;linux学习相关#xff0c;读研读博… ❤️觉得内容不错的话欢迎点赞收藏加关注后续会继续输入更多优质内容❤️有问题欢迎大家加关注私戳或者评论包括但不限于NLP算法相关linux学习相关读研读博相关......【NLP相关】基于现有的预训练模型使用领域语料二次预训练 在自然语言处理领域预训练模型已经成为了最为热门和有效的技术之一。预训练模型通过在大规模文本语料库上进行训练可以学习到通用的语言模型然后可以在不同的任务上进行微调。但是预训练模型在领域特定任务上的表现可能不够好因为它们是在通用语言语料库上进行训练的。为了提高在特定领域的任务中的性能我们可以使用领域语料库对预训练模型进行二次预训练。 本篇博客将介绍如何基于现有的预训练模型使用领域语料二次预训练。我们将以 PyTorch 和 Transformers 库为基础以医学文本分类任务为例来详细说明二次预训练的过程。 1. 模型介绍 在本篇博客中我们使用的预训练模型是 BERTBidirectional Encoder Representations from Transformers。BERT 是一种基于 Transformer 的预训练模型由 Google 团队开发。它在多个自然语言处理任务上取得了最先进的结果例如文本分类、命名实体识别和问答系统等。 BERT 模型是一种双向的 Transformer 模型能够有效地处理自然语言序列。它将文本输入嵌入到向量空间中并在此基础上进行自监督训练以学习通用的语言表示。在预训练完成后BERT 模型可以进行微调以适应不同的自然语言处理任务。 2. 代码实现 2.1 数据预处理 在开始二次预训练之前我们需要准备领域特定的语料库。在这里我们使用的是医学文本分类数据集其中包含了一些医学文章的标题和摘要并且每个文本都被标记为一个预定义的类别。 首先我们需要将原始文本数据拆分为单个句子并将其标记化处理。我们可以使用 Hugging Face 的 tokenizer 来完成这个任务。 from transformers import BertTokenizer# 加载 BERT tokenizer tokenizer BertTokenizer.from_pretrained(bert-base-uncased)class MedicalDataset(Dataset):def __init__(self, tokens, max_length128):self.tokens tokensself.max_length max_lengthdef __len__(self):return len(self.tokens)def __getitem__(self, idx):# 获取句子对tokens self.tokens[idx]# 将句子对拼接成一个序列并将其标记化处理input_ids tokenizer.encode(tokens[0], tokens[1],add_special_tokensTrue, max_lengthself.max_length,truncation_strategylongest_first)attention_mask [1] * len(input_ids)# 填充序列长度padding [0] * (self.max_length - len(input_ids))input_ids paddingattention_mask padding# 返回 input_ids 和 attention_maskreturn torch.LongTensor(input_ids), torch.LongTensor(attention_mask)2.2 二次预训练 在数据预处理之后我们可以开始进行二次预训练了。在这里我们将使用 Hugging Face 的 Transformers 库以及 PyTorch 框架来实现二次预训练。 首先我们需要加载预训练的 BERT 模型。在这里我们使用的是 bert-base-uncased 模型它是一个基于英文的预训练模型。我们还需要定义一些训练参数例如学习率和批大小等。 from transformers import BertForPreTraining, AdamW from torch.utils.data import DataLoader# 加载预训练的 BERT 模型 model BertForPreTraining.from_pretrained(bert-base-uncased)# 定义训练参数 epochs 3 batch_size 16 learning_rate 2e-5 device torch.device(cuda if torch.cuda.is_available() else cpu)# 将模型移动到 GPU 上 model.to(device)接下来我们需要加载领域特定的语料库并将其转换为 PyTorch 数据集。在这里我们使用的是 PyTorch 中的 Dataset 类。我们还需要将数据集加载到 PyTorch 的数据加载器中以便进行训练。 # 加载领域特定的语料库 with open(medical_data.txt) as f:sentences f.readlines()# 将语料库转换为 PyTorch 数据集 dataset MedicalDataset(sentences)# 将数据集加载到 PyTorch 的数据加载器中 loader DataLoader(dataset, batch_sizebatch_size, shuffleTrue)在准备好数据集之后我们可以开始训练模型了。我们将使用 AdamW 优化器和交叉熵损失函数来训练模型。在每个 epoch 完成之后我们会对模型进行一次测试并计算准确率和损失函数值。最后我们将保存训练好的模型。 # 定义优化器和损失函数 optimizer AdamW(model.parameters(), lrlearning_rate) criterion torch.nn.CrossEntropyLoss()# 训练模型 for epoch in range(epochs):total_loss 0total_correct 0total_samples 0# 遍历数据集for i, batch in enumerate(loader):# 将输入数据和标签移动到 GPU 上input_ids, attention_mask batchinput_ids input_ids.to(device)attention_mask attention_mask.to(device)# 将模型设置为训练模式model.train()# 计算模型的输出outputs model(input_ids, attention_maskattention_mask)# 计算损失函数值loss criterion(outputs.logits.view(-1, 2), outputs.labels.view(-1))# 清除之前的梯度optimizer.zero_grad()# 反向传播和优化loss.backward()optimizer.step()# 统计训练信息total_loss loss.item()total_samples input_ids.size(0)total_correct torch.sum(torch.argmax(outputs.logits, dim-1) outputs.labels.view(-1)).item()# 输出训练信息if (i 1) % 100 0:print(Epoch [%d/%d], Step [%d/%d], Loss: %.4f, Accuracy: %.2f%%% (epoch 1, epochs, i 1, len(loader),total_loss / total_samples, total_correct / total_samples * 100))# 在每个 epoch 完成之后进行一次测试 with torch.no_grad():total_loss 0total_correct 0total_samples 0# 将模型设置为评估模式model.eval()# 遍历测试数据集for i, batch in enumerate(test_loader):# 将输入数据和标签移动到 GPU 上input_ids, attention_mask batchinput_ids input_ids.to(device)attention_mask attention_mask.to(device)# 计算模型的输出outputs model(input_ids, attention_maskattention_mask)# 计算损失函数值loss criterion(outputs.logits.view(-1, 2), outputs.labels.view(-1))# 统计测试信息total_loss loss.item()total_samples input_ids.size(0)total_correct torch.sum(torch.argmax(outputs.logits, dim-1) outputs.labels.view(-1)).item()# 输出测试信息print(Epoch [%d/%d], Test Loss: %.4f, Test Accuracy: %.2f%%% (epoch 1, epochs, total_loss / total_samples, total_correct / total_samples * 100))#保存训练好的模型torch.save(model.state_dict(), medical_bert.pth)3. 案例解析 假设我们要对医学领域中的文本进行二次预训练。我们可以使用已经预训练好的 BERT 模型并使用医学领域的语料库进行二次预训练。 首先我们需要将医学领域的语料库进行预处理。在这里我们可以使用 NLTK 库来进行分词和词形还原等操作。我们还可以将语料库中的每个句子转换为 BERT 输入格式。 import nltk from nltk.tokenize import word_tokenize from nltk.stem import WordNetLemmatizer from transformers import BertTokenizer# 加载 BERT 分词器 tokenizer BertTokenizer.from_pretrained(bert-base-uncased)# 加载 NLTK 分词器和词形还原 nltk.download(punkt) nltk.download(wordnet) lemmatizer WordNetLemmatizer()加载医学领域的语料库 with open(medical_corpus.txt, r) as f:corpus f.read()#对每个句子进行分词、词形还原和转换为 BERT 输入格式 sentences [] for sentence in nltk.sent_tokenize(corpus):words nltk.word_tokenize(sentence)words [lemmatizer.lemmatize(word) for word in words]words [word.lower() for word in words]tokens tokenizer.encode_plus(words,add_special_tokensTrue,max_length512,paddingmax_length,truncationTrue)sentences.append((tokens[input_ids], tokens[attention_mask])) 接下来我们需要使用这些句子对 BERT 模型进行二次预训练。为此我们需要定义一个新的数据加载器将这些句子传递给模型进行训练。 from torch.utils.data import Dataset, DataLoaderclass MedicalDataset(Dataset):def __init__(self, sentences):self.sentences sentencesdef __len__(self):return len(self.sentences)def __getitem__(self, idx):return self.sentences[idx]# 定义数据加载器 loader DataLoader(MedicalDataset(sentences),batch_size16,shuffleTrue)现在我们可以开始对 BERT 模型进行二次预训练了。我们可以使用与之前相同的训练代码。 # 定义训练函数 def train(model, loader, optimizer, device):model.train()for batch in loader:input_ids batch[0].to(device)attention_mask batch[1].to(device)optimizer.zero_grad()loss, _ model(input_idsinput_ids,attention_maskattention_mask,output_hidden_statesTrue)[:2]loss.backward()optimizer.step()# 加载预训练的 BERT 模型 model BertForMaskedLM.from_pretrained(bert-base-uncased)# 设置设备 device torch.device(cuda if torch.cuda.is_available() else cpu) model.to(device)# 定义优化器 optimizer AdamW(model.parameters(), lr5e-5)# 进行二次预训练 for epoch in range(num_epochs):train(model, train_loader, optimizer, device)# 每个 epoch 结束后测试模型的性能perplexity evaluate(model, test_loader, device)print(fEpoch {epoch1}, perplexity: {perplexity:.3f})# 保存模型model_path fmodel_epoch{epoch1}.pttorch.save(model.state_dict(), model_path)这里定义了一个 train 函数来训练模型。这个函数接收一个模型、一个数据加载器、一个优化器和一个设备作为输入。它会将模型设为训练模式并且在每个批次上运行前向传播、计算损失、计算梯度和更新参数。 接下来我们加载预训练的 BERT 模型并将其移动到所选设备上。我们使用 AdamW 优化器并将学习率设置为 5e-5。 最后我们使用一个简单的 for 循环来进行二次预训练。在每个 epoch 结束时我们会在测试集上评估模型并打印出 perplexity 指标。我们还会将模型保存在磁盘上以便以后进行检索。 ❤️觉得内容不错的话欢迎点赞收藏加关注后续会继续输入更多优质内容❤️有问题欢迎大家加关注私戳或者评论包括但不限于NLP算法相关linux学习相关读研读博相关......
http://www.hkea.cn/news/14344993/

相关文章:

  • 刷评论网站推广今天最新军事新闻
  • 师范街网站建设影视公司简介
  • 加大网站建设力度公司网站翻译工作怎么做
  • 本地做网站绑定域名网页录制视频教程
  • 网站ui需求企业宣传型网站建设
  • 网站建设基础书本自助建站上建的网站免费吗
  • 嘉定广州网站建设建立个人网站能赚钱吗
  • 网站建设与运营培训班怎样学习做网站的编程
  • wordpress淘宝客类网站建设上海的建设网站
  • 开发一个定制的网站手机微信网站模板
  • 有哪些游戏网站wordpress 手机应用
  • 福州网站建设思企公司网站域名费用怎么交
  • 期货做程序化回测的网站张家界建设局网站电话号码
  • 福州做商城网站公司wordpress 下载远程图
  • 延安网站优化免费签名设计软件
  • 企业手机网站建设网站建设工作分工
  • 建设通网站上能查到的企业沧州公司网站建设
  • 用手机怎么做网站网站建设忄金手指花总
  • 看案例网站精品域名更换
  • 珠海高端企业网站做数据ppt模板下载网站
  • 文汇网站建设消防网站建设目标
  • 如何做网站推广方法长沙seo优化排名
  • 360网站建设价位如何用手机创造游戏软件
  • 住房与城市建设部网站网站建设用户调查问卷
  • 洛阳网站建设 培训企业建站系统免费
  • 电子商务网站建设干货大型购物网站建设
  • 旅游网站设计规划书上海网站推广模板
  • 网站开发费会计处理深圳互动网站建设
  • 网站服务器安全部署免费开发个人小程序的平台
  • 株洲网站关键词优化个人网站做推广