一个XLM-RoBERTa模型微调的实例
时间: 2024-05-13 22:18:33 浏览: 333
NLPCC2020 预训练模型介绍_加载预训练模型
以下是使用XLM-RoBERTa模型微调的示例代码。
首先,安装必要的库:
```
!pip install transformers
!pip install torch
```
导入所需的库:
```python
import torch
from transformers import XLMRobertaTokenizer, XLMRobertaForSequenceClassification, Trainer, TrainingArguments
```
加载模型和分词器:
```python
model_name = "xlm-roberta-large"
tokenizer = XLMRobertaTokenizer.from_pretrained(model_name)
model = XLMRobertaForSequenceClassification.from_pretrained(model_name, num_labels=2)
```
接下来,准备数据集。这里假设有一个名为 `train_data` 的训练集和一个名为 `eval_data` 的验证集,其中每个示例都包含一个文本字符串和一个标签(0或1)。
使用分词器对数据进行编码:
```python
def encode_data(data):
encoded = tokenizer.batch_encode_plus(
[(d["text"], d["label"]) for d in data],
add_special_tokens=True,
return_attention_mask=True,
pad_to_max_length=True,
max_length=512,
return_tensors="pt"
)
return {
"input_ids": encoded["input_ids"],
"attention_mask": encoded["attention_mask"],
"labels": torch.tensor([d["label"] for d in data])
}
train_encoded = encode_data(train_data)
eval_encoded = encode_data(eval_data)
```
定义训练参数:
```python
training_args = TrainingArguments(
output_dir="./results",
num_train_epochs=3,
per_device_train_batch_size=8,
per_device_eval_batch_size=16,
warmup_steps=500,
weight_decay=0.01,
logging_dir="./logs",
logging_steps=100,
load_best_model_at_end=True,
evaluation_strategy="epoch"
)
```
定义训练器:
```python
trainer = Trainer(
model=model,
args=training_args,
train_dataset=train_encoded,
eval_dataset=eval_encoded,
compute_metrics=lambda pred: {"accuracy": (pred.predictions.argmax(axis=1) == pred.label_ids).mean()}
)
```
开始训练:
```python
trainer.train()
```
训练完成后,可以使用以下代码评估模型:
```python
trainer.evaluate()
```
以上就是使用XLM-RoBERTa模型微调的示例代码。
阅读全文