huggingface transformer实战
时间: 2025-01-23 18:06:28 浏览: 51
### Hugging Face Transformers 实战教程示例项目
#### 加载预训练模型并执行文本分类任务
为了展示如何利用Hugging Face Transformers库进行实际操作,下面提供了一个简单的Python脚本实例,该实例展示了如何加载预训练的语言模型,并将其应用于二元情感分析任务。
```python
from transformers import pipeline, AutoModelForSequenceClassification, AutoTokenizer
# 加载预训练的情感分析pipeline
classifier = pipeline('sentiment-analysis')
# 测试输入语句列表
test_sentences = ["I love programming!", "This movie was terrible."]
# 对测试句子进行预测
results = classifier(test_sentences)
for result in results:
print(f"label: {result['label']}, with score: {round(result['score'], 4)}")
```
这段代码首先导入必要的模块,接着创建一个用于情感分析的`pipeline`对象。之后定义了一些待测字符串组成的列表作为输入数据源。最后遍历输出结果,打印每条记录对应的标签及其置信度得分[^3]。
#### 使用自定义数据集微调BERT模型
对于更复杂的场景,则可能涉及到基于自有标注的数据来优化现有模型的表现。这里给出一段更为完整的流程:
1. 准备好CSV文件格式的数据集;
2. 定义PyTorch Dataset类读取上述数据;
3. 构建DataLoader迭代器供后续训练过程调用;
4. 初始化指定架构(如BERT)的基础模型以及相应的分词器;
5. 设定超参数配置项;
6. 启动fine-tuning阶段直至收敛;
7. 验证最终效果并通过保存最佳权重完成部署前准备工作。
具体实现细节如下所示:
```python
import torch
from datasets import load_dataset
from transformers import BertForSequenceClassification, Trainer, TrainingArguments, BertTokenizerFast
# 加载本地csv文件形式的小规模样例数据集
dataset = load_dataset('csv', data_files={'train': 'path/to/train.csv', 'validation': 'path/to/val.csv'})
tokenizer = BertTokenizerFast.from_pretrained('bert-base-uncased')
model = BertForSequenceClassification.from_pretrained('bert-base-uncased', num_labels=2)
def preprocess_function(examples):
return tokenizer(examples['text'], truncation=True, padding='max_length')
encoded_datasets = dataset.map(preprocess_function, batched=True)
columns_to_return = ['input_ids', 'attention_mask', 'labels']
encoded_datasets.set_format(type='torch', columns=columns_to_return)
training_args = TrainingArguments(
output_dir='./results',
evaluation_strategy="epoch",
learning_rate=2e-5,
per_device_train_batch_size=8,
per_device_eval_batch_size=8,
num_train_epochs=3,
weight_decay=0.01,
)
trainer = Trainer(
model=model,
args=training_args,
train_dataset=encoded_datasets['train'],
eval_dataset=encoded_datasets['validation']
)
trainer.train()
```
此段程序片段主要针对已有结构化的表格型数据实施了初步清理工作;随后借助于Transformers内置工具完成了tokenization环节;紧接着设置了若干关键性的hyperparameters选项;再者便是正式开启了finetune周期直到达到预期目标为止[^1]。
阅读全文
相关推荐


















