贵阳网站建设报价,网站规划包括哪些方面,专业小程序制作开发平台,南京装修公司十大排名榜Transformers库是什么
Transformers 库是一个在自然语言处理#xff08;NLP#xff09;领域广泛使用的强大库#xff0c;提供了一套全面的工具和预训练模型#xff0c;用于执行各种 NLP 任务。以下是 transformers 库提供的主要功能#xff1a;
1.预训练模型#xff1a… Transformers库是什么
Transformers 库是一个在自然语言处理NLP领域广泛使用的强大库提供了一套全面的工具和预训练模型用于执行各种 NLP 任务。以下是 transformers 库提供的主要功能
1.预训练模型 该库包含多种预训练模型如 BERT、GPT生成式预训练变换器、RoBERTa、T5 等。这些模型在大型数据集上进行了预训练可以进行特定下游任务的微调。 2.分词Tokenization 该库提供了高效的分词工具允许将原始文本转换为适用于预训练模型输入的数字表示。分词是为 NLP 任务准备文本数据的关键步骤。 3.模型架构 您可以轻松加载预训练模型并使用其架构进行各种任务。该库支持编码器和解码器架构适用于分类、翻译、摘要等任务。 4.模型训练和微调 虽然库提供了许多任务的预训练模型但也允许用户在自己的数据集上对这些模型进行微调。这在需要特定任务或领域的情况下非常有用。 5.优化器和学习率调度器 该库包含常见的优化器如AdamW以及学习率调度器有助于训练和微调过程。 6.Pipeline API transformers 库提供了一个便捷的 pipeline API允许您使用几行代码执行各种 NLP 任务。任务包括文本生成、命名实体识别、情感分析、翻译、摘要等。 7.模型仓库 该库维护了一个模型仓库您可以在其中找到不同任务和语言的各种预训练模型。这使得轻松访问和使用适合特定需求的模型变得简单。 8.与Hugging Face Datasets的集成 该库与 Hugging Face Datasets 库集成提供各种不同 NLP 任务的数据集。这使得加载和预处理用于训练和评估的数据集变得容易。
Tranformers API
在编码过程中使用比较多的是调用Transformers API下面列举了transformers库提供的常用API
最常用的API pipeline: 一个用于执行各种NLP任务的简单API例如文本生成、命名实体识别、情感分析等。 AutoModel 和 AutoTokenizer: 自动加载适合任务和模型的预训练模型和分词器。 BertModel 和 BertTokenizer: 加载和使用BERT模型和分词器。 其他API Trainer 和 TrainingArguments: 用于训练和微调模型的API。 pipeline 中特定任务的参数如generator、ner、text-classification等。 AutoConfig: 自动加载适合模型的配置。 AutoFeatureExtractor: 自动加载适合模型的特征提取器。 AutoModelForSequenceClassification 和 AutoModelForTokenClassification: 自动加载适合任务的预训练模型。
下面是调用pipeline接口完成一个简单的情感分类任务pipeline中输入任务名称“sentiment-analysis”因为没有指定具体的模型名称这里会下载默认的模型。
from transformers import pipelinesentiment_analysis pipeline(sentiment-analysis)
sentiment_result sentiment_analysis(I love using transformers library!)
print(\nSentiment Analysis Result:)
print(sentiment_result[0][label])
下图是执行py脚本文件的过程可以看到下载了一个配置文件config.json,下载了模型默认模型是distilbert-base-uncased-finetuned-sst-2-english,还下载了tokenizer_config.json,以及一个分词器tokenizer使用的映射表vocab.txt. 下载完后执行任务分析的结果是“输入的句子是一个POSITIVE的情感结果”。在上面代码中如果要指定特定的模型来完成sentiment-analysis任务,增加model_name参数即可即pipeline(sentiment-analysis,model_namexxx)即可。在NLP任务中为什么需要Tokenizer呢什么是Tokenizer呢
Tokenizer
在处理自然语言时tokenizer 的作用是将文本分割成单词、子词或其他基本单元这有助于将文本转换为计算机能够理解的形式。主要的原因包括
文本表示 计算机无法直接理解自然语言因此需要将文本转换为数字表示。Tokenizer 将文本分割成离散的单元例如单词或子词然后为每个单元分配一个唯一的标识符或向量。这样整个文本就可以被表示为一个数字序列便于计算机处理。模型输入 许多自然语言处理NLP模型尤其是深度学习模型通常接受固定长度的输入。Tokenizer 可以确保输入文本被切分成适当的长度使其适应模型的输入要求。处理不规则性 自然语言中存在许多不规则性如大小写、标点符号、缩写词等。Tokenizer 可以处理这些不规则性将文本标准化为模型能够处理的形式。词汇表管理 Tokenizer 通常与一个词汇表vocabulary一起使用该词汇表包含了在训练数据中出现的所有单词或子词。这有助于限制模型的输入空间并提高模型的泛化能力。降低计算复杂度 Tokenizer 可以降低计算复杂度尤其是当处理大量文本数据时。通过将文本标记化为较小的单元模型可以更高效地处理数据。特定任务处理 在某些 NLP 任务中特定的 Tokenization 策略可能是为了更好地捕捉任务相关的信息例如在情感分析中可能会保留表情符号。
Tokenizer 通常与一个词汇表vocabulary一起使用以确保在文本处理过程中每个单词或子词都能被映射到一个唯一的标识符或向量。上面下载的vocab.txt就是词汇表。
除了Tokenizer的信息外还下载了config.json文件config的内容如下图所示可以看到都是一些神经网络相关参数。 部分参数作用说明如下所示
activation (激活函数): gelu 表示使用 GELUGaussian Error Linear Unit作为激活函数。GELU 是一种用于神经网络的非线性激活函数。 architectures (模型架构): 包含模型所使用的架构列表。在这个例子中使用了 DistilBERT 的序列分类版本即 DistilBertForSequenceClassification。 attention_dropout (注意力机制的 dropout): 0.1 表示注意力机制的 dropout 概率为 0.1。这是为了在训练时随机关闭一部分注意力头以防止过拟合。 dim (模型的隐藏层维度): 768 表示模型的隐藏层维度为 768。 dropout (全连接层的 dropout): 0.1 表示全连接层的 dropout 概率为 0.1。这是为了在训练时随机关闭一些神经元以防止过拟合。
除了Pipeline API在加载和使用预训练大模型的常用接口还有AutoModel 和 AutoTokenizer 。
AutoModel AutoTokenizer
from transformers import AutoModel, AutoTokenizer# 指定模型名称
model_name bert-base-uncased# 使用 AutoTokenizer 加载适用于任务的分词器
tokenizer AutoTokenizer.from_pretrained(model_name)# 使用 AutoModel 加载适用于任务的预训练模型
model AutoModel.from_pretrained(model_name)# 输入文本
input_text I love using transformers library!# 使用分词器对文本进行分词并为模型准备输入
input_ids tokenizer(input_text, return_tensorspt)[input_ids]# 使用模型进行推理
outputs model(input_ids)# 打印模型输出
print(Model Output:)
print(outputs.last_hidden_state)上面的代码中调用的是bert模型执行上面的代码结果如下图所示可以看到仍然是下载了模型相关的配置文件和模型本身的权重信息这些文件在huggingface上都能查看到。执行的结果是输出了一段文本的张量信息。 除了加载bert这种小的模型外也可以使用相同的方法加载预训练大模型。下面是Chatglm模型官网给出的下载启动大模型的代码可以看到也是通过transformers库的AutoTokenizer和AutoModel即可快速完成模型的部署和使用。 当然除了上面介绍的常用的两类APItransformers库还提供训练数据下载微调等能力更多信息可查看官网。