赞
踩
摘要:本文介绍了Hugging Face Transformers库,重点介绍了预训练语言模型和迁移学习的概念。我们将通过示例来说明如何使用Transformers库进行文本分类、生成等任务,以及如何用自己的数据微调预训练模型。
Hugging Face Transformers 是一个用于自然语言处理(NLP)的开源库,提供了各种预训练模型。这些模型被广泛应用于各种任务,如文本分类、命名实体识别、问答、文本生成等。Transformers库易于使用,可方便地集成到现有的深度学习框架,如PyTorch和TensorFlow。
预训练语言模型是在大规模文本数据上训练的深度学习模型。这些模型学习了文本的潜在结构,包括语法、句法和语义等。预训练模型可以用作迁移学习的基础,为各种NLP任务提供丰富的特征表示。一些著名的预训练模型包括BERT、GPT-2、RoBERTa等。
迁移学习是一种利用预训练模型的知识来解决新任务的方法。通过在预训练模型的基础上进行微调,可以快速适应新任务,从而节省大量计算资源。微调是指在新任务的数据上对预训练模型的权重进行细微调整,使模型能够适应新任务。
from transformers import BertTokenizer, BertForSequenceClassification
import torch
tokenizer = BertTokenizer.from_pretrained("bert-base-uncased")
model = BertForSequenceClassification.from_pretrained("bert-base-uncased")
inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")
labels = torch.tensor([1]).unsqueeze(0)
outputs = model(**inputs, labels=labels)
loss = outputs.loss
logits = outputs.logits
from transformers import GPT2LMHeadModel, GPT2Tokenizer
tokenizer = GPT2Tokenizer.from_pretrained("gpt2")
model = GPT2LMHeadModel.from_pretrained("gpt2")
inputs = tokenizer.encode("Once upon a time", return_tensors="pt")
outputs = model.generate(inputs, max_length=50, num_return_sequences=5)
for i, output in enumerate(outputs):
print(f"Generated text {i+1}: {tokenizer.decode(output)}")
以下是使用Hugging Face Transformers在自定义数据集上进行微调的示例:
from transformers import BertTokenizer, BertForSequenceClassification, Trainer, TrainingArguments import torch import numpy as np from sklearn.datasets import fetch_20newsgroups from sklearn.model_selection import train_test_split # 加载数据 newsgroups_data = fetch_20newsgroups(subset="all", remove=("headers", "footers", "quotes")) X_train, X_test, y_train, y_test = train_test_split(newsgroups_data.data, newsgroups_data.target, test_size=0.2) # 预处理函数 def preprocess(texts, labels, tokenizer): input_ids = tokenizer(texts, truncation=True, padding=True, return_tensors="pt") return input_ids, torch.tensor(labels) tokenizer = BertTokenizer.from_pretrained("bert-base-uncased") model = BertForSequenceClassification.from_pretrained("bert-base-uncased", num_labels=20) # 预处理数据 X_train_processed, y_train_processed = preprocess(X_train, y_train, tokenizer) X_test_processed, y_test_processed = preprocess(X_test, y_test, tokenizer) # 设置训练参数 training_args = TrainingArguments( output_dir="./results", num_train_epochs=3, per_device_train_batch_size=16, per_device_eval_batch_size=16, logging_steps=100, evaluation_strategy="epoch", ) # 训练模型 trainer = Trainer( model=model, args=training_args, train_dataset=torch.utils.data.TensorDataset(X_train_processed, y_train_processed), eval_dataset=torch.utils.data.TensorDataset(X_test_processed, y_test_processed), ) trainer.train()
本文介绍了Hugging Face Transformers库,包括预训练语言模型和迁移学习。我们通过实际代码示例演示了如何使用Transformers进行文本分类、生成等任务,以及如何在自定义数据集上微调预训练模型。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。