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

网站运营有哪些岗位如何建设和优化一个网站

网站运营有哪些岗位,如何建设和优化一个网站,苏州找网络公司建网站,小程序设计案例在上一篇博客中#xff0c;我们已经利用任务加载器task成功地从数据集文件中加载了文本数据#xff0c;并通过预处理器processor构建了词典和编码器。在这一过程中#xff0c;我们还完成了词向量的提取。 接下来的步骤涉及到定义模型、加载数据#xff0c;并开始训练过程。…  在上一篇博客中我们已经利用任务加载器task成功地从数据集文件中加载了文本数据并通过预处理器processor构建了词典和编码器。在这一过程中我们还完成了词向量的提取。 接下来的步骤涉及到定义模型、加载数据并开始训练过程。 为了确保项目代码能够快速切换到不同的模型并且能够有效地支持transformers库中的预训练模型我们不仅仅是定义模型那么简单。为此我们采取了进一步的措施在模型外面再套上一个额外的层我称之为模型包装器NNModelWrapper。此外为了提高配置的灵活性和可维护性我们将所有的配置项如批量大小、数据集地址、训练周期数、学习率等抽取出来统一放置在一个名为WrapperConfig的配置容器中。通过这种方式我们就可以避免直接在代码中修改配置参数而是通过更改配置文件来实现从而使得整个项目更加模块化和易于管理。 本章内容属于模型训练阶段将分别介绍包装器配置WrapperConfig、模型包装器NNModelWrapper和模型Model。 [1] 包装器配置WrapperConfig 我们把配置全部放在yaml文件里然后读取里面的配置赋值给WrapperConfig类。定义如下 class WrapperConfig(object):A configuration for a :class:NNModelWrapper.def __init__(self,tokenizer,max_seq_len: int,vocab_num: int,word2vec_path: str,batch_size: int 1,epoch_num: int 1,learning_rate: float 0.001):self.tokenizer tokenizerself.max_seq_len max_seq_lenself.batch_size batch_sizeself.epoch_num epoch_numself.learning_rate learning_rateself.word2vec_path word2vec_pathself.vocab_num vocab_numWrapperConfig 类用于配置神经网络模型包装器NNModelWrapper。类的构造函数接受多个参数来初始化配置 tokenizer: 分词器对象用于文本处理或文本转换为模型可理解的格式。其实就是预处理器processor提供的tokenizer。 max_seq_len (int): 模型可以处理的最大序列长度。 vocab_num (int): 词汇表的大小。 word2vec_path (str):预训练的词向量模型的文件路径。即上文提取的词向量。 batch_size (int): 每个批次处理的数据样本数量。 epoch_num (int): 训练轮次。 learning_rate (float): 学习率。 [2] 模型包装器NNModelWrapper 模型包装器NNModelWrapper接受2个参数一个是包装器配置WrapperConfig另外一个是自定义模型Model。代码如下 class NNModelWrapper:A wrapper around a Transformer-based language model.def __init__(self, config: WrapperConfig, model):Create a new wrapper from the given config.self.config configself.model model(self.config)def generate_dataset(self, data, labeledTrue):Generate a dataset from the given examples.features self._convert_examples_to_features(data)feature_dict {input_ids: torch.tensor([f.input_ids for f in features], dtypetorch.long),labels: torch.tensor([f.labels for f in features], dtypetorch.long),}if not labeled:del feature_dict[labels]return DictDataset(**feature_dict)def _convert_examples_to_features(self, examples) - List[InputFeatures]:Convert a set of examples into a list of input features.features []for (ex_index, example) in tqdm(enumerate(examples)):if ex_index % 5000 0:logging.info(Writing example {}.format(ex_index))input_features self.get_input_features(example)features.append(input_features)# logging.info(f最终数据构造形式{features[0]})return featuresdef get_input_features(self, example) - InputFeatures:Convert the given example into a set of input featurestext example.textinput_ids self.config.tokenizer(text)labels np.copy(input_ids)labels[:-1] input_ids[1:]assert len(input_ids) self.config.max_seq_lenreturn InputFeatures(input_idsinput_ids, attention_maskNone, token_type_idsNone, labelslabels)NNModelWrapper 类是围绕一个神经网络语言模型的封装器提供了模型的初始化和数据处理的方法。 · 类初始化 (init):   config: 接收一个 WrapperConfig 类的实例包含模型的配置信息。   model: 接收一个模型构造函数该函数使用配置信息来初始化模型。 · 生成数据集 (generate_dataset):从给定的数据样本中生成一个数据集。首先把数据样本转换为特征通过 _convert_examples_to_features 方法然后根据这些特征创建一个 DictDataset 对象。如果数据未标记labeledFalse则从特征字典中删除 labels 键。 · 转换样本为特征 (_convert_examples_to_features):这是个私有方法把数据样本转换为模型可以理解的输入特征。对于每个样本使用 get_input_features 方法来生成输入特征。使用 tqdm 显示处理进度并利用 logging 记录处理信息。 · 获取输入特征 (get_input_features):此方法将单个数据样本转换为输入特征。首先获取文本内容然后使用配置中的分词器tokenizer将文本转换为 input_ids。标签labels是 input_ids 的一个变体其中每个元素都向右移动一个位置。用断言确保 input_ids 的长度与配置中的 max_seq_len 相等。 [3] 模型Model 模型包装器NNModelWrapper里面的第二个参数Model才是我们真正的模型。 在古诗生成AI任务中RNN是比较适配任务的模型我们定义的RNN模型如下 class Model(nn.Module):def __init__(self, config):super(Model, self).__init__()V config.vocab_num # vocab_numE 300 # embed_dimH 256 # hidden_sizeembedding_pretrained torch.tensor(np.load(config.word2vec_path)[embeddings].astype(float32))self.embedding nn.Embedding.from_pretrained(embedding_pretrained, freezeFalse)self.lstm nn.LSTM(E, H, 1, bidirectionalFalse, batch_firstTrue, dropout0.1)self.fc nn.Linear(H, V)self.loss nn.CrossEntropyLoss()def forward(self, input_ids, labelsNone):embed self.embedding(input_ids) # [batch_size, seq_len, embed_dim]out, _ self.lstm(embed) # [batch_size, seq_len, hidden_size]logit self.fc(out) # [batch_size, seq_len, vocab_num]if labels is not None:loss self.loss(logit.view(-1, logit.shape[-1]), labels.view(-1))return loss, logitelse:return logit[None, :]在我们的模型中特别值得一提的是嵌入层embedding layer。在初始化这一层时我们使用的是之前提取出的词向量。这种做法有助于模型更好地理解和处理文本数据。 此次我们定义的模型是一个基于RNN的结构它包括三个主要部分embedding层、lstm层和fc全连接层。 在模型的前向传播forward过程中输入input_ids的形状为[batch_size, seq_len]即每个批次有多少文本每个文本的序列长度是多少。输入数据首先通过嵌入层处理输出的embed的形状为[batch_size, seq_len, embed_dim]即每个单词都被转换成了对应的嵌入向量。接着数据通过一个单层的lstm网络得到输出out最后经过全连接层fc得到最终的概率分布logit。 这个概率分布logit的含义是对于每个批次中的文本每个文本在序列的每个位置上都有vocab_num个可能的词可以填入而logit中存储的正是这些词的概率。为了生成文本我们提取每个位置上概率最高的词的索引然后根据这些索引在词典中查找对应的词。这就是我们通过模型运行文本生成得到的结果。 [4] 训练 所有的工作都准备好了下面我们正式开始模型的训练。 对于神经网络的训练、验证、测试、优化等等操作我采用了transformers的Trainer极大的简化了项目操作。 第一步加载yaml配置文件读取所有配置项 with open(config.yaml, r, encodingutf-8) as f:conf yaml.load(f.read(),Loaderyaml.FullLoader)conf_train conf[train]conf_sys conf[sys]第二步初始化任务加载器加载数据集 Task TASKS[conf_train[task_name]]()data Task.get_train_examples(conf_train[dataset_url])index int(len(data) * conf_train[rate])train_data, dev_data data[:index], data[index:]第三步初始化数据预处理器并向外提供tokenizer Processor PROCESSORS[conf_train[task_name]](data, conf_train[max_seq_len], conf_train[vocab_path])tokenizer lambda text: Processor.tokenizer(text)第四步初始化模型包装配置 wrapper_config WrapperConfig(tokenizertokenizer,max_seq_lenconf_train[max_seq_len],batch_sizeconf_train[batch_size],epoch_numconf_train[epoch_num],learning_rateconf_train[learning_rate],word2vec_pathconf_train[word2vec_path],vocab_numlen(Processor.vocab))第五步加载模型初始化模型包装器 x import_module(fmain.model.{conf_train[model_name]})wrapper NNModelWrapper(wrapper_config, x.Model)print(f模型有 {sum(p.numel() for p in wrapper.model.parameters() if p.requires_grad):,} 个训练参数)第六步使用模型包装器生成数据集向量 train_dataset wrapper.generate_dataset(train_data)val_dataset wrapper.generate_dataset(dev_data)第七步创建训练器 # 构建trainer def create_trainer(wrapper, train_dataset, val_dataset):# 模型model wrapper.modelargs TrainingArguments(./checkpoints, # 模型保存的输出目录save_strategyIntervalStrategy.STEPS, # 模型保存策略save_steps50, # 每n步保存一次模型 1步表示一个batch训练结束evaluation_strategyIntervalStrategy.STEPS,eval_steps50,overwrite_output_dirTrue, # 设置overwrite_output_dir参数为True表示覆盖输出目录中已有的模型文件logging_dir./logs, # 可视化数据文件存储地址log_levelwarning,logging_steps50, # 每n步保存一次评价指标 1步表示一个batch训练结束 | 还控制着控制台的打印频率 每n步打印一下评价指标 | n过大时只会保存最后一次的评价指标disable_tqdmTrue, # 是否不显示数据训练进度条learning_ratewrapper.config.learning_rate,per_device_train_batch_sizewrapper.config.batch_size,per_device_eval_batch_sizewrapper.config.batch_size,num_train_epochswrapper.config.epoch_num,dataloader_num_workers2, # 数据加载的子进程数weight_decay0.01,save_total_limit2,load_best_model_at_endTrue)# 早停设置early_stopping EarlyStoppingCallback(early_stopping_patience3, # 如果8次验证集性能没有提升则停止训练early_stopping_threshold0, # 验证集的性能提高不到0时也停止训练)trainer Trainer(model,args,train_datasettrain_dataset,eval_datasetval_dataset,callbacks[early_stopping], # 添加EarlyStoppingCallback回调函数)return trainertrainer create_trainer(wrapper, train_dataset, val_dataset)第八步开始训练并设置保存模型 trainer.train()trainer.save_model(conf_train[model_save_dir] conf_train[task_name] / conf_train[model_name])训练的整体代码如下 # 构建trainer def create_trainer(wrapper, train_dataset, val_dataset):# 模型model wrapper.modelargs TrainingArguments(./checkpoints, # 模型保存的输出目录save_strategyIntervalStrategy.STEPS, # 模型保存策略save_steps50, # 每n步保存一次模型 1步表示一个batch训练结束evaluation_strategyIntervalStrategy.STEPS,eval_steps50,overwrite_output_dirTrue, # 设置overwrite_output_dir参数为True表示覆盖输出目录中已有的模型文件logging_dir./logs, # 可视化数据文件存储地址log_levelwarning,logging_steps50, # 每n步保存一次评价指标 1步表示一个batch训练结束 | 还控制着控制台的打印频率 每n步打印一下评价指标 | n过大时只会保存最后一次的评价指标disable_tqdmTrue, # 是否不显示数据训练进度条learning_ratewrapper.config.learning_rate,per_device_train_batch_sizewrapper.config.batch_size,per_device_eval_batch_sizewrapper.config.batch_size,num_train_epochswrapper.config.epoch_num,dataloader_num_workers2, # 数据加载的子进程数weight_decay0.01,save_total_limit2,load_best_model_at_endTrue)# 早停设置early_stopping EarlyStoppingCallback(early_stopping_patience3, # 如果8次验证集性能没有提升则停止训练early_stopping_threshold0, # 验证集的性能提高不到0时也停止训练)trainer Trainer(model,args,train_datasettrain_dataset,eval_datasetval_dataset,callbacks[early_stopping], # 添加EarlyStoppingCallback回调函数)return trainerdef main():# ### 通用配置# ##with open(config.yaml, r, encodingutf-8) as f:conf yaml.load(f.read(),Loaderyaml.FullLoader)conf_train conf[train]conf_sys conf[sys]# 系统设置初始化System(conf_sys).init_system()# 初始化任务加载器Task TASKS[conf_train[task_name]]()data Task.get_train_examples(conf_train[dataset_url])index int(len(data) * conf_train[rate])train_data, dev_data data[:index], data[index:]# 初始化数据预处理器Processor PROCESSORS[conf_train[task_name]](data, conf_train[max_seq_len], conf_train[vocab_path])tokenizer lambda text: Processor.tokenizer(text)# 初始化模型包装配置wrapper_config WrapperConfig(tokenizertokenizer,max_seq_lenconf_train[max_seq_len],batch_sizeconf_train[batch_size],epoch_numconf_train[epoch_num],learning_rateconf_train[learning_rate],word2vec_pathconf_train[word2vec_path],vocab_numlen(Processor.vocab))x import_module(fmain.model.{conf_train[model_name]})wrapper NNModelWrapper(wrapper_config, x.Model)print(f模型有 {sum(p.numel() for p in wrapper.model.parameters() if p.requires_grad):,} 个训练参数)# 生成数据集train_dataset wrapper.generate_dataset(train_data)val_dataset wrapper.generate_dataset(dev_data)# 训练与保存trainer create_trainer(wrapper, train_dataset, val_dataset)trainer.train()trainer.save_model(conf_train[model_save_dir] conf_train[task_name] / conf_train[model_name])if __name__ __main__:main()运行之后看到下面输出代表项目成功运行 [5] 进行下一篇实战 【古诗生成AI实战】之五——加载模型进行古诗生成
文章转载自:
http://www.morning.plqsc.cn.gov.cn.plqsc.cn
http://www.morning.rlqqy.cn.gov.cn.rlqqy.cn
http://www.morning.rjmg.cn.gov.cn.rjmg.cn
http://www.morning.msmtf.cn.gov.cn.msmtf.cn
http://www.morning.mnsts.cn.gov.cn.mnsts.cn
http://www.morning.nlcw.cn.gov.cn.nlcw.cn
http://www.morning.znqfc.cn.gov.cn.znqfc.cn
http://www.morning.ppbrq.cn.gov.cn.ppbrq.cn
http://www.morning.lcbnb.cn.gov.cn.lcbnb.cn
http://www.morning.lprfk.cn.gov.cn.lprfk.cn
http://www.morning.mzcrs.cn.gov.cn.mzcrs.cn
http://www.morning.jcjgh.cn.gov.cn.jcjgh.cn
http://www.morning.ymhzd.cn.gov.cn.ymhzd.cn
http://www.morning.mczjq.cn.gov.cn.mczjq.cn
http://www.morning.pqqzd.cn.gov.cn.pqqzd.cn
http://www.morning.zwhtr.cn.gov.cn.zwhtr.cn
http://www.morning.jfjfk.cn.gov.cn.jfjfk.cn
http://www.morning.tbkqs.cn.gov.cn.tbkqs.cn
http://www.morning.qphgp.cn.gov.cn.qphgp.cn
http://www.morning.pjjkz.cn.gov.cn.pjjkz.cn
http://www.morning.dnls.cn.gov.cn.dnls.cn
http://www.morning.kzhxy.cn.gov.cn.kzhxy.cn
http://www.morning.drbd.cn.gov.cn.drbd.cn
http://www.morning.tsnq.cn.gov.cn.tsnq.cn
http://www.morning.rsbqq.cn.gov.cn.rsbqq.cn
http://www.morning.nsmyj.cn.gov.cn.nsmyj.cn
http://www.morning.lwdzt.cn.gov.cn.lwdzt.cn
http://www.morning.kmldm.cn.gov.cn.kmldm.cn
http://www.morning.jmbfx.cn.gov.cn.jmbfx.cn
http://www.morning.yqfdl.cn.gov.cn.yqfdl.cn
http://www.morning.lmcrc.cn.gov.cn.lmcrc.cn
http://www.morning.hydkd.cn.gov.cn.hydkd.cn
http://www.morning.nknt.cn.gov.cn.nknt.cn
http://www.morning.nlzpj.cn.gov.cn.nlzpj.cn
http://www.morning.jsxrm.cn.gov.cn.jsxrm.cn
http://www.morning.kpxky.cn.gov.cn.kpxky.cn
http://www.morning.wdqhg.cn.gov.cn.wdqhg.cn
http://www.morning.wmfr.cn.gov.cn.wmfr.cn
http://www.morning.gwwtm.cn.gov.cn.gwwtm.cn
http://www.morning.mrgby.cn.gov.cn.mrgby.cn
http://www.morning.gcysq.cn.gov.cn.gcysq.cn
http://www.morning.pzrnf.cn.gov.cn.pzrnf.cn
http://www.morning.xcbnc.cn.gov.cn.xcbnc.cn
http://www.morning.bgpb.cn.gov.cn.bgpb.cn
http://www.morning.amlutsp.cn.gov.cn.amlutsp.cn
http://www.morning.hhqjf.cn.gov.cn.hhqjf.cn
http://www.morning.hhskr.cn.gov.cn.hhskr.cn
http://www.morning.c7623.cn.gov.cn.c7623.cn
http://www.morning.dkmzr.cn.gov.cn.dkmzr.cn
http://www.morning.mqfhy.cn.gov.cn.mqfhy.cn
http://www.morning.clhyj.cn.gov.cn.clhyj.cn
http://www.morning.tongweishi.cn.gov.cn.tongweishi.cn
http://www.morning.mtqqx.cn.gov.cn.mtqqx.cn
http://www.morning.fnbtn.cn.gov.cn.fnbtn.cn
http://www.morning.mcgsq.cn.gov.cn.mcgsq.cn
http://www.morning.pggkr.cn.gov.cn.pggkr.cn
http://www.morning.jokesm.com.gov.cn.jokesm.com
http://www.morning.chhhq.cn.gov.cn.chhhq.cn
http://www.morning.yodajy.cn.gov.cn.yodajy.cn
http://www.morning.glbnc.cn.gov.cn.glbnc.cn
http://www.morning.tgpgx.cn.gov.cn.tgpgx.cn
http://www.morning.zdsdn.cn.gov.cn.zdsdn.cn
http://www.morning.ksggr.cn.gov.cn.ksggr.cn
http://www.morning.hgfxg.cn.gov.cn.hgfxg.cn
http://www.morning.rfrnc.cn.gov.cn.rfrnc.cn
http://www.morning.qcygd.cn.gov.cn.qcygd.cn
http://www.morning.hlwzd.cn.gov.cn.hlwzd.cn
http://www.morning.hkchp.cn.gov.cn.hkchp.cn
http://www.morning.qwyms.cn.gov.cn.qwyms.cn
http://www.morning.szoptic.com.gov.cn.szoptic.com
http://www.morning.tyhfz.cn.gov.cn.tyhfz.cn
http://www.morning.mzhjx.cn.gov.cn.mzhjx.cn
http://www.morning.qnywy.cn.gov.cn.qnywy.cn
http://www.morning.lwlnw.cn.gov.cn.lwlnw.cn
http://www.morning.qkskm.cn.gov.cn.qkskm.cn
http://www.morning.ychoise.com.gov.cn.ychoise.com
http://www.morning.nuejun.com.gov.cn.nuejun.com
http://www.morning.ppwdh.cn.gov.cn.ppwdh.cn
http://www.morning.pjwml.cn.gov.cn.pjwml.cn
http://www.morning.mztyh.cn.gov.cn.mztyh.cn
http://www.tj-hxxt.cn/news/249241.html

相关文章:

  • 哪个公司做网站系统开发服务
  • 烟台建站服务一台网站服务器多少钱
  • 优化关键词排名工具黄山seo公司
  • weex做网站葫岛百度seo
  • 聚美优品网站建设的目标赤壁市建设局网站
  • 青岛通力建设集团网站西宁手机网站微站建设
  • 南昌网站建设品牌wordpress 最简单模板
  • 百度网站怎么制作为什么企业需要建设网站?
  • 关于做美食的网站移动端开发需要学什么
  • 能上国外网站的免费dns曲靖网站建设dodoco
  • 自己做网站能宣传自己的产品吗上海房地产网站建设
  • 打开一个不良网站提示创建成功做网站框架需要什么软件
  • 焦作网站设计公司aspcms 网站栏目管理
  • 做网站每天更新两篇文章网站怎么优化搜索
  • 东莞微网站建设服务南昌房产网信息网
  • 重庆网站空间键词排名三水建设局网站
  • 网站制作需要的软件苏州建站模板厂家
  • 做文献ppt模板下载网站京东网站设计代码
  • 网站怎么加链接青岛网站优化联系方式
  • 徐州网站建设魔站中英文网站多少钱
  • 网站刷流量有用吗网站功能建设中
  • 网站开发交接资料做网站要什么资料
  • 美食网站开发的背景广告制作加工厂
  • 网站链接怎么做临沂百度seo
  • 树莓派下载wordpress宁波seo
  • 海口网站设计公司垂直 网站开发
  • 网站备案需要什么流程正规医院看男科大概多少钱
  • 可以做网站的语言站长工具seo优化建议
  • 做网站违法北京网站设计公司兴田德润信任高
  • 网站备案最快合肥网络推广有限公司