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

济南做网站建设的公司电话免费主题网站

济南做网站建设的公司电话,免费主题网站,郴州在哪里,营销网站建设哪家好Transformers 微调 基于 Transformers 实现模型微调训练的主要流程数据字段数据拆分#xff08;分成训练跟测试#xff09;下载数据集数据集抽样预处理数据数据抽样微调训练配置加载 BERT 模型训练超参数#xff08;TrainingArguments#xff09;模型权重保存路径(output_d… Transformers 微调 基于 Transformers 实现模型微调训练的主要流程数据字段数据拆分分成训练跟测试下载数据集数据集抽样预处理数据数据抽样微调训练配置加载 BERT 模型训练超参数TrainingArguments模型权重保存路径(output_dir) 开始训练实例化训练器Trainer可用nvidia-smi 查看使用率保存模型和训练状态 基于 Transformers 实现模型微调训练的主要流程 数据集下载 数据预处理 训练超参数配置 训练评估指标设置 训练器基本介绍 实战训练 模型保存 一个典型的数据点包括文本和相应的标签。来自YelpReviewFull测试集的示例如下 {label: 0,text: I got \new\ tires from them and within two weeks got a flat. I took my car to a local mechanic to see if i could get the hole patched, but they said the reason I had a flat was because the previous patch had blown - WAIT, WHAT? I just got the tire and never needed to have it patched? This was supposed to be a new tire. \\nI took the tire over to Flynn\s and they told me that someone punctured my tire, then tried to patch it. So there are resentful tire slashers? I find that very unlikely. After arguing with the guy and telling him that his logic was far fetched he said he\d give me a new tire \\this time\\. \\nI will never go back to Flynn\s b/c of the way this guy treated me and the simple fact that they gave me a used tire! }数据字段 ‘text’: 评论文本使用双引号“转义任何内部双引号都通过2个双引号”转义。换行符使用反斜杠后跟一个 “n” 字符转义即 “\n”。 ‘label’: 对应于评论的分数介于1和5之间。 数据拆分分成训练跟测试 Yelp评论完整星级数据集是通过随机选取每个1到5星评论的130,000个训练样本和10,000个测试样本构建的。总共有650,000个训练样本和50,000个测试样本。 下载数据集 import os# 代理的地址格式为 http://ip:port http_proxyhttp://proxy.sensetime.com:3128/ https_proxyhttp://proxy.sensetime.com:3128/ # 设置代理 os.environ[HTTP_PROXY] http_proxy os.environ[HTTPS_PROXY] https_proxy from datasets import load_dataset dataset load_dataset(yelp_review_full) #得到的dataset 其实就是一个字典keyvalue格式train 跟test就是这个下载下来的数据集的key。而dataset[train] 通过这个可以拿到Dataset格式的训练数据集集合 print(dataset[train][0])数据集抽样 import random import pandas as pd import datasets from IPython.display import display, HTML #用于从给定的数据集 (dataset) 中随机选择一些示例并显示 def show_random_elements(dataset, num_examples10):assert num_examples len(dataset), Cant pick more elements than there are in the dataset.picks []for _ in range(num_examples):pick random.randint(0, len(dataset)-1)print(pick)while pick in picks:pick random.randint(0, len(dataset)-1)picks.append(pick)#将从数据集中随机选择的示例创建为 Pandas DataFramedf pd.DataFrame(dataset[picks])for column, typ in dataset.features.items():#遍历数据集的所有特征if isinstance(typ, datasets.ClassLabel):#检查特征是否是分类标签#如果是分类标签将使用 lambda 函数将标签的索引映射到实际的类别名称df[column] df[column].transform(lambda i: typ.names[i])display(HTML(df.to_html())) #可以print(show_random_elements(dataset[train]) 查看效果预处理数据 下载数据集到本地后使用 Tokenizer 来处理文本对于长度不等的输入数据可以使用填充padding和截断truncation策略来处理。 Datasets 的 map 方法支持一次性在整个数据集上应用预处理函数。 下面使用填充到最大长度的策略处理整个数据集 from transformers import AutoTokenizer #用于加载预训练的文本处理模型Tokenizer以便将文本数据转换为模型可以接受的输入格式 tokenizer AutoTokenizer.from_pretrained(bert-base-cased)def tokenize_function(examples):return tokenizer(examples[text], paddingmax_length, truncationTrue)tokenized_datasets dataset.map(tokenize_function, batchedTrue)#刚刚生成的dataset 通过map的方法把里面的每个样本都进行tokenize_function操作生成处理过的数据集tokenized_datasets#可以show_random_elements(tokenized_datasets[train], num_examples1)查看效果数据抽样 使用 1000 个数据样本在 BERT 上演示小规模训练基于 Pytorch Trainer shuffle()函数会随机重新排列列的值。如果您希望对用于洗牌数据集的算法有更多控制可以在此函数中指定generator参数来使用不同的numpy.random.Generator。 small_train_dataset tokenized_datasets[train].shuffle(seed42).select(range(1000)) small_eval_dataset tokenized_datasets[test].shuffle(seed42).select(range(1000))微调训练配置 加载 BERT 模型 警告通知我们正在丢弃一些权重vocab_transform和vocab_layer_norm 层并随机初始化其他一些权重pre_classifier和classifier 层。在微调模型情况下是绝对正常的因为我们正在删除用于预训练模型的掩码语言建模任务的头部并用一个新的头部替换它对于这个新头部我们没有预训练的权重所以库会警告我们在用它进行推理之前应该对这个模型进行微调而这正是我们要做的事情。 from transformers import AutoModelForSequenceClassification model AutoModelForSequenceClassification.from_pretrained(bert-base-cased, num_labels5)训练超参数TrainingArguments 完整配置参数与默认值https://huggingface.co/docs/transformers/v4.36.1/en/main_classes/trainer#transformers.TrainingArguments 源代码定义https://github.com/huggingface/transformers/blob/v4.36.1/src/transformers/training_args.py#L161 模型权重保存路径(output_dir) from transformers import TrainingArguments model_dir models/bert-base-cased# logging_steps 默认值为500根据我们的训练数据和步长将其设置为100, num_train_epochs 默认为3 training_args TrainingArguments(output_dirf{model_dir}/test_trainer,logging_dirf{model_dir}/test_trainer/runs,logging_steps100) # 完整的超参数配置 print(training_args)训练过程中的指标评估Evaluate) Hugging Face Evaluate 库 支持使用一行代码获得数十种不同领域自然语言处理、计算机视觉、强化学习等的评估方法。 当前支持 完整评估指标https://huggingface.co/evaluate-metric 训练器Trainer在训练过程中不会自动评估模型性能。因此我们需要向训练器传递一个函数来计算和报告指标。 Evaluate库提供了一个简单的准确率函数您可以使用evaluate.load函数加载 import numpy as np import evaluatemetric evaluate.load(accuracy)接着调用 compute 函数来计算预测的准确率。 在将预测传递给 compute 函数之前我们需要将 logits 转换为预测值所有Transformers 模型都返回 logits。 def compute_metrics(eval_pred):logits, labels eval_predpredictions np.argmax(logits, axis-1)return metric.compute(predictionspredictions, referenceslabels)训练过程指标监控 通常为了监控训练过程中的评估指标变化我们可以在TrainingArguments指定evaluation_strategy参数以便在 epoch 结束时报告评估指标。 from transformers import TrainingArguments, Trainer training_args TrainingArguments(output_dirf{model_dir}/test_trainer, evaluation_strategyepoch,logging_dirf{model_dir}/test_trainer/runs,logging_steps100)开始训练 实例化训练器Trainer可用nvidia-smi 查看使用率 trainer Trainer(modelmodel,argstraining_args,train_datasetsmall_train_dataset,eval_datasetsmall_eval_dataset,compute_metricscompute_metrics, ) trainer.train()small_test_dataset tokenized_datasets[test].shuffle(seed64).select(range(100)) trainer.evaluate(small_test_dataset)保存模型和训练状态 使用 trainer.save_model 方法保存模型后续可以通过 from_pretrained() 方法重新加载 使用 trainer.save_state 方法保存训练状态 trainer.save_model(f{model_dir}/finetuned-trainer) trainer.save_state()微调代码示例 import os # 代理的地址格式为 http://ip:port http_proxyhttp://proxy.sensetime.com:3128/ https_proxyhttp://proxy.sensetime.com:3128/ # 设置代理 os.environ[HTTP_PROXY] http_proxy os.environ[HTTPS_PROXY] https_proxy## 下载数据集 from datasets import load_dataset dataset load_dataset(yelp_review_full) #得到的dataset 其实就是一个字典keyvalue格式train 跟test就是这个下载下来的数据集的key。而dataset[train] 通过这个可以拿到Dataset格式的训练数据集集合 #print(dataset[train][0])可以查看数据集的大概的结构import random import pandas as pd import datasets from IPython.display import display, HTML #用于从给定的数据集 (dataset) 中随机选择一些示例并显示 def show_random_elements(dataset, num_examples10):assert num_examples len(dataset), Cant pick more elements than there are in the dataset.picks []for _ in range(num_examples):pick random.randint(0, len(dataset)-1)print(pick)while pick in picks:pick random.randint(0, len(dataset)-1)picks.append(pick)#将从数据集中随机选择的示例创建为 Pandas DataFramedf pd.DataFrame(dataset[picks])for column, typ in dataset.features.items():#遍历数据集的所有特征if isinstance(typ, datasets.ClassLabel):#检查特征是否是分类标签#如果是分类标签将使用 lambda 函数将标签的索引映射到实际的类别名称df[column] df[column].transform(lambda i: typ.names[i])display(HTML(df.to_html()))#from transformers import AutoTokenizer#用于从Hugging Face加载预训练的文本处理模型Tokenizer以便将文本数据转换为模型可以接受的输入格式 tokenizer AutoTokenizer.from_pretrained(bert-base-cased)def tokenize_function(examples):return tokenizer(examples[text], paddingmax_length, truncationTrue)tokenized_datasets dataset.map(tokenize_function, batchedTrue) show_random_elements(tokenized_datasets[train], num_examples1)# 使用 1000 个数据样本在 BERT 上演示小规模训练基于 Pytorch Trainer small_train_dataset tokenized_datasets[train].shuffle(seed42).select(range(1000)) small_eval_dataset tokenized_datasets[test].shuffle(seed42).select(range(1000))# 微调训练配置 # 从Hugging Face加载BERT 模型 from transformers import AutoModelForSequenceClassification model AutoModelForSequenceClassification.from_pretrained(bert-base-cased, num_labels5)from transformers import TrainingArguments model_dir models/bert-base-cased # logging_steps 默认值为500根据我们的训练数据和步长将其设置为100, num_train_epochs 默认为3 from transformers import TrainingArguments, Trainer training_args TrainingArguments(output_dirf{model_dir}/test_trainer, evaluation_strategyepoch,logging_dirf{model_dir}/test_trainer/runs,logging_steps100)# Evaluate库提供了一个简单的准确率函数使用evaluate.load函数加载 import numpy as np import evaluate metric evaluate.load(accuracy)# compute 函数来计算预测的准确率。 def compute_metrics(eval_pred):logits, labels eval_predpredictions np.argmax(logits, axis-1)return metric.compute(predictionspredictions, referenceslabels)### 实例化训练器Trainer trainer Trainer(modelmodel,argstraining_args,train_datasetsmall_train_dataset,eval_datasetsmall_eval_dataset,compute_metricscompute_metrics)trainer.train() small_test_dataset tokenized_datasets[test].shuffle(seed64).select(range(100)) trainer.evaluate(small_test_dataset)
http://www.pierceye.com/news/916430/

相关文章:

  • 郑州高端品牌网站建设镇江网站营销推广
  • 网站开发简单的框架南昌手机网站
  • 网站分析与优化百度新闻源网站有哪些
  • 直播网站开发秀色上海综合新闻
  • 电子商务网站建设与管理课后题答案企业网站推广哪家好
  • 网站被挂黑链怎么删除石家庄企业网站建设
  • 网站模板怎么连接域名可视化网页设计在线
  • 美术馆网站建设要求开发软件多少钱一个月
  • 直播网站开发核心技术wordpress访问次数插件
  • wap网站 劣势微信小程序怎么写
  • 商业网站开发与设计网站seo是什么意思
  • 内蒙古住房和城乡建设网站做网站的人怎么上传内容的
  • 视频网站视频预览怎么做的美丽说网站案例分析
  • 宝安多屏网站建设公司好吗网站启用cdn加速
  • 上海网站制作方法网站页面设计报价
  • 介绍自己做的网站的论文网站模块建设中
  • 诸城手机网站建设微官网怎么制作
  • 做网站界面的软件网站开发售后服务
  • 织梦可以做英文网站吗成交型网站建设公司
  • 长沙招聘网站制作广告设计公司需要用专线网吗
  • 一级做爰A视频免费网站国内疫苗接种率
  • 绍兴网站公司网站制作163邮箱登录页面
  • 阐述电子商务网站的建设要求网站开发总结性报告
  • html与wordpressaso优化方法
  • 众v创业营网站开发营销活动方案策划
  • 什么网站免费做推广抚州北京网站建设
  • 响应式网站 软件做网站下载那个数据库好
  • 网站loading动画效果微信开放平台介绍
  • 山东网站建设报价网页制作与网站建设答案
  • 佛山网站搭建费用淄博刚刚发布紧急通知