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

南京专业做网站的公司有哪些免费网页搭建

南京专业做网站的公司有哪些,免费网页搭建,丹阳市建设局网站,烟台市建设局网站深度学习笔记#xff08;8#xff09;预训练模型 文章目录 深度学习笔记#xff08;8#xff09;预训练模型一、预训练模型构建一、微调模型#xff0c;训练自己的数据1.导入数据集2.数据集处理方法3.完形填空训练 使用分词器将文本转换为模型的输入格式参数 return_tenso…深度学习笔记8预训练模型 文章目录 深度学习笔记8预训练模型一、预训练模型构建一、微调模型训练自己的数据1.导入数据集2.数据集处理方法3.完形填空训练 使用分词器将文本转换为模型的输入格式参数 return_tensorspt 表示返回PyTorch张量格式执行模型预测 一、预训练模型构建 加载模型和之前一样用别人弄好的 # 导入warnings模块用于忽略后续代码中可能出现的警告信息 import warnings # 设置warnings模块使其忽略所有警告 warnings.filterwarnings(ignore)# 从transformers库中导入AutoModelForMaskedLM类该类用于预训练的掩码语言模型 from transformers import AutoModelForMaskedLM# 指定模型检查点这里使用的是distilbert-base-uncased模型 model_checkpoint distilbert-base-uncased # 使用from_pretrained方法加载预训练的模型该方法将从指定的检查点加载模型 model AutoModelForMaskedLM.from_pretrained(model_checkpoint)咱们的任务就是去预测MASK到底是个啥 text This is a great # 定义一个文本字符串# 从指定的模型检查点加载分词器 # model_checkpoint 是之前定义的模型检查点路径用于加载与模型配套的分词器 tokenizer AutoTokenizer.from_pretrained(model_checkpoint)# 使用分词器将文本转换为模型的输入格式 # 参数 return_tensorspt 表示返回PyTorch张量格式 inputs tokenizer(text, return_tensorspt)# inputs 现在是一个包含模型输入的张量或字典可以用于模型推理{input_ids: tensor([[ 101, 2023, 2003, 1037, 2307, 103, 1012, 102]]), attention_mask: tensor([[1, 1, 1, 1, 1, 1, 1, 1]])}下面的代码可以看到mask的id是103 tokenizer.mask_token_id103一、微调模型训练自己的数据 1.导入数据集 from datasets import load_dataset # 从datasets库中导入load_dataset函数imdb_dataset load_dataset(imdb) # 使用load_dataset函数加载IMDB数据集这段代码是使用 datasets 库来加载 IMDB 数据集。IMDB 数据集是一个用于情感分析的经典数据集包含了两类电影评论正面和负面。 本身是带标签的 正面和负面 0 表示negative1表示positive 先查看下数据集的数据 sample imdb_dataset[train].shuffle(seed42).select(range(3)) # 从训练数据中随机选择3个样本for row in sample:print(f\n Review: {row[text]}) # 打印样本的文本内容print(f Label: {row[label]}) # 打印样本的标签其中一个如下 Review: This movie is a great. The plot is very true to the book which is a classic written by Mark Twain. The movie starts of with a scene where Hank sings a song with a bunch of kids called when you stub your toe on the moon It reminds me of Sinatras song High Hopes, it is fun and inspirational. The Music is great throughout and my favorite song is sung by the King, Hank (bing Crosby) and Sir Saggy Sagamore. OVerall a great family movie or even a great Date movie. This is a movie you can watch over and over again. The princess played by Rhonda Fleming is gorgeous. I love this movie!! If you liked Danny Kaye in the Court Jester then you will definitely like this movie.Label: 1但是我们要做完形填空标签是没用的 2.数据集处理方法 这里文本长度要统一 计算每一个文本的长度word_ids指定chunk_size然后将所有数据按块进行拆分比如每块128个句子是700字节要分成128,128。。。。这种 先定义个函数这样下面使用可以直接调用 def tokenize_function(examples):# 调用分词器tokenizer的函数传入输入的文本数据集result tokenizer(examples[text])# 如果分词器支持快速模式则生成单词索引word_idsif tokenizer.is_fast:result[word_ids] [result.word_ids(i) for i in range(len(result[input_ids]))]# 返回转换后的结果return result进行文本处理 tokenized_datasets imdb_dataset.map(tokenize_function, # 应用tokenize_function函数到每个样本batchedTrue, # 是否将数据分成批次处理remove_columns[text, label] # 要从数据集中移除的列 )首先imdb_dataset.map() 方法被用来应用 tokenize_function 函数到 imdb_dataset 的 train 部分。这个方法会对数据集中的每个样本应用指定的函数并返回一个新的数据集其中包含应用函数后的结果。 batchedTrue 参数告诉 map 方法将输入数据分成批次进行处理。这通常是为了提高效率尤其是在处理大型数据集时。 remove_columns[“text”, “label”] 参数告诉 map 方法在处理数据时移除指定的列。在这个例子中它移除了 text 和 label 列因为 text 列已经被处理为模型的输入而 label 列不再需要因为咱们是完形填空任务不需要标签。 然后进行切分 tokenizer.model_max_length chunk_size 128tokenizer.model_max_length 是一个属性它表示模型能够接受的最大输入长度。这个属性通常用于序列标注任务以确保输入的长度不超过模型的最大接受长度。 chunk_size 是一个参数用于指定将输入序列分割成小块的大小。这个参数通常用于处理过长的输入序列以便将其分割成多个小块然后分别处理这些小块。 因为上限是512 所以你切分要是64 128 256这种 切分的时候也可以先看下文本长度 # 看看每一个都多长 tokenized_samples tokenized_datasets[train][:3]for idx, sample in enumerate(tokenized_samples[input_ids]):print(f Review {idx} length: {len(sample)})Review 0 length: 363Review 1 length: 304Review 2 length: 133这里看出128切分比较合适 先拿着三个试试 concatenated_examples {k: sum(tokenized_samples[k], []) for k in tokenized_samples.keys()#计算拼一起有多少个 } total_length len(concatenated_examples[input_ids]) print(f Concatenated reviews length: {total_length})Concatenated reviews length: 800下面进行切分 chunks {# 使用字典推导式dict comprehension创建一个新的字典其中键是序列的键k值是分割后的块k: [t[i : i chunk_size] for i in range(0, total_length, chunk_size)]# 遍历concatenated_examples字典中的每个键值对for k, t in concatenated_examples.items() }for chunk in chunks[input_ids]:# 打印每个chunk的长度print(f Chunk length: {len(chunk)})Chunk length: 128Chunk length: 128Chunk length: 128Chunk length: 128Chunk length: 128Chunk length: 128Chunk length: 32最后那个不够数直接给他丢弃 def group_texts(examples):# 将所有的文本实例拼接到一起concatenated_examples {k: sum(examples[k], []) for k in examples.keys()}# 计算拼接后的总长度total_length len(concatenated_examples[list(examples.keys())[0]])# 使用整除运算符//计算每个chunk的长度然后乘以chunk_size以确保不会出现多余的文本total_length (total_length // chunk_size) * chunk_size# 根据计算出的总长度对拼接后的文本进行切分result {# 使用字典推导式dict comprehension创建一个新的字典其中键是原始字典的键k值是切分后的块k: [t[i : i chunk_size] for i in range(0, total_length, chunk_size)]# 遍历concatenated_examples字典中的每个键值对for k, t in concatenated_examples.items()}# 如果完型填空任务需要使用标签则将标签复制到结果字典中result[labels] result[input_ids].copy()# 返回分割后的结果return result使用整除运算符//计算每个chunk的长度然后乘以chunk_size这个就是说如果小于128 整除后就得0就没了 train: Dataset({features: [input_ids, attention_mask, word_ids, labels],num_rows: 61291})test: Dataset({features: [input_ids, attention_mask, word_ids, labels],num_rows: 59904})unsupervised: Dataset({features: [input_ids, attention_mask, word_ids, labels],num_rows: 122957}) })会发现数据量大了 3.完形填空训练 from transformers import DataCollatorForLanguageModeling # 从transformers库中导入DataCollatorForLanguageModeling类data_collator DataCollatorForLanguageModeling(tokenizertokenizer, mlm_probability0.15) # 创建一个数据收集器然后再举个例子看看mask长啥样 samples [lm_datasets[train][i] for i in range(2)] # 从训练数据中选择2个样本 for sample in samples:_ sample.pop(word_ids) # 移除样本中的word_ids键因为发现没啥用print(sample)for chunk in data_collator(samples)[input_ids]:print(f\n {tokenizer.decode(chunk)})#tokenizer.decode(chunk)是为了让被隐藏的更明显点所以直接decode出来print(len(chunk))训练过程 from transformers import TrainingArguments # 从transformers库中导入TrainingArguments类batch_size 64 # 定义训练和评估时的批次大小 # 计算每个epoch打印结果的步数 logging_steps len(downsampled_dataset[train]) // batch_size model_name model_checkpoint.split(/)[-1] # 从模型检查点路径中提取模型名称training_args TrainingArguments(output_dirf{model_name}-finetuned-imdb, # 指定输出目录其中包含微调后的模型和日志文件overwrite_output_dirTrue, # 是否覆盖现有的输出目录evaluation_strategyepoch, # 指定评估策略这里为每个epoch评估一次learning_rate2e-5, # 学习率weight_decay0.01, # 权重衰减系数per_device_train_batch_sizebatch_size, # 每个GPU的训练批次大小per_device_eval_batch_sizebatch_size, # 每个GPU的评估批次大小logging_stepslogging_steps, # 指定每个epoch打印结果的步数num_train_epochs1, # 指定训练的epoch数量save_strategyepoch, # 指定保存策略这里为每个epoch保存一次模型 ) 生成的模型 from transformers import Trainer # 从transformers库中导入Trainer类trainer Trainer(modelmodel, # 指定要训练的模型实例argstraining_args, # 指定训练参数对象train_datasetdownsampled_dataset[train], # 指定训练数据集eval_datasetdownsampled_dataset[test], # 指定评估数据集data_collatordata_collator, # 指定数据收集器 )评估标准使用困惑度 import math # 导入math模块用于计算对数和指数eval_results trainer.evaluate() # 使用Trainer的evaluate方法评估模型print(f Perplexity: {math.exp(eval_results[eval_loss]):.2f}) # 打印评估结果中的对数人话就是你不得在mask那挑啥词合适吗平均挑了多少个才能答对 训练模型 trainer.train() eval_results trainer.evaluate() print(f Perplexity: {math.exp(eval_results[eval_loss]):.2f})发现困惑度降低了 from transformers import AutoModelForMaskedLMmodel_checkpoint ./distilbert-base-uncased model AutoModelForMaskedLM.from_pretrained(./distilbert-base-uncased-finetuned-imdb/checkpoint-157)加载自己的模型 import torch # 导入torch库用于处理张量 使用分词器将文本转换为模型的输入格式 参数 return_tensors“pt” 表示返回PyTorch张量格式 inputs tokenizer(text, return_tensors“pt”) 执行模型预测 # model 是一个预训练的BERT模型实例 # **inputs 表示将inputs字典中的所有键值对作为关键字参数传递给model token_logits model(**inputs).logits# 找到遮蔽词在输入中的索引 # inputs[input_ids] 是模型输入的词汇索引张量 # tokenizer.mask_token_id 是遮蔽词的词汇索引 mask_token_index torch.where(inputs[input_ids] tokenizer.mask_token_id)[1]# 获取遮蔽词的预测logits # mask_token_index 是遮蔽词在输入中的索引张量 # token_logits 是模型输出的预测logits张量 mask_token_logits token_logits[0, mask_token_index, :]# 找到前5个最可能的替换词 # torch.topk 函数用于找到最大k个值及其索引 # dim1 表示在第二个维度即词汇维度上进行排序 top_5_tokens torch.topk(mask_token_logits, 5, dim1).indices[0].tolist()# 打印每个最可能的替换词及其替换后的文本 for token in top_5_tokens:# 使用 tokenizer.decode 方法将索引转换为文本# text 是原始文本# tokenizer.mask_token 是遮蔽词# [token] 是替换词的索引列表print(f {text.replace(tokenizer.mask_token, tokenizer.decode([token]))})This is a great deal.This is a great idea.This is a great adventure.This is a great film.This is a great movie.可以看到结果和上面的通用的不一样了这里是film movie这些针对你的训练数据的了--------
http://www.w-s-a.com/news/157754/

相关文章:

  • 企业微站系统重庆高端网站建设价格
  • 有没有做衣服的网站吗网站自适应开发
  • 青海省制作网站专业专业定制网吧桌椅
  • 网站开发的项目17岁高清免费观看完整版
  • 手机网站建设多少钱一个门网站源码
  • 重庆 网站开发天津住房和城乡建设厅官方网站
  • 泰安高级网站建设推广厦门高端网站建设定制
  • jsp网站开发引用文献手机seo排名
  • 创建一家网站如何创设计网页的快捷网站
  • 1688代加工官方网站h5开发教程
  • 静态网站源码下载网站怎么显示备案号
  • 网站代码设计网站开发维护任职要求
  • 长寿做网站的电话怎么快速刷排名
  • 上海市中学生典型事例网站邯郸全网推广
  • 厦门网站建设680元好男人的最好的影院
  • 石家庄网站建设设计产品设计专业就业前景
  • 网站移动排名做最好最全的命理网站
  • 网站怎么防黑客杭州市做外贸网站的公司
  • 网站推广公司认准乐云seo易语言做网站登录
  • 配色设计网站推荐网站下拉菜单重叠
  • 内容展示型网站特点在北京注册公司需要多少钱
  • h5网站源代码创意设计理念
  • 岳阳网站开发服务推广运营平台
  • 网站开发得多长时间湖南建设人力资源网证书查询
  • 论坛网站开发网络营销是什么时候产生的
  • 帮人做网站赚钱无忧软文网
  • 做网站要不要营业执照重庆网站优化seo公司
  • 学院宣传网站建设简介做网站没灵感
  • 网站建设终稿确认书网站意义学校
  • 3小时网站建设平台专业制作教学课件