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

XLNet做文本分类

import torch
from transformers import XLNetTokenizer, XLNetForSequenceClassification
from torch.utils.data import DataLoader, TensorDataset

# 示例文本数据
texts = ["This is a positive example.", "This is a negative example.", "Another positive example."]

# 示例标签
labels = [1, 0, 1]  # 1表示正例,0表示负例

# 加载XLNet模型和分词器
model_name = "xlnet-base-cased"
tokenizer = XLNetTokenizer.from_pretrained(model_name)
model = XLNetForSequenceClassification.from_pretrained(model_name)

# 分词并编码文本
tokenized_texts = tokenizer(texts, padding=True, truncation=True, return_tensors='pt')

# 将标签转换为PyTorch张量
labels = torch.tensor(labels)

# 创建数据集
dataset = TensorDataset(tokenized_texts['input_ids'], tokenized_texts['attention_mask'], labels)

# 创建数据加载器
batch_size = 2
dataloader = DataLoader(dataset, batch_size=batch_size, shuffle=True)

# 设置训练设备
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model.to(device)

# 定义优化器和损失函数
optimizer = torch.optim.AdamW(model.parameters(), lr=1e-5)
criterion = torch.nn.CrossEntropyLoss()

# 训练模型
epochs = 3
for epoch in range(epochs):
    for input_ids, attention_mask, labels in dataloader:
        input_ids, attention_mask, labels = input_ids.to(device), attention_mask.to(device), labels.to(device)
        
        optimizer.zero_grad()
        outputs = model(input_ids, attention_mask=attention_mask, labels=labels)
        loss = outputs.loss
        loss.backward()
        optimizer.step()

# 测试模型
model.eval()
with torch.no_grad():
    test_texts = ["This is a test sentence.", "Another test sentence."]
    tokenized_test_texts = tokenizer(test_texts, padding=True, truncation=True, return_tensors='pt')
    input_ids = tokenized_test_texts['input_ids'].to(device)
    attention_mask = tokenized_test_texts['attention_mask'].to(device)
    
    outputs = model(input_ids, attention_mask=attention_mask)
    logits = outputs.logits
    predictions = torch.argmax(logits, dim=1)
    print("Predictions:", predictions.tolist())
 

import torch
from transformers import XLNetTokenizer, XLNetForSequenceClassification
from torch.utils.data import DataLoader, TensorDataset# 示例文本数据
texts = ["This is a positive example.", "This is a negative example.", "Another positive example."]# 示例标签
labels = [1, 0, 1]  # 1表示正例,0表示负例# 加载XLNet模型和分词器
model_name = "xlnet-base-cased"
tokenizer = XLNetTokenizer.from_pretrained(model_name)
model = XLNetForSequenceClassification.from_pretrained(model_name)# 分词并编码文本
tokenized_texts = tokenizer(texts, padding=True, truncation=True, return_tensors='pt')# 将标签转换为PyTorch张量
labels = torch.tensor(labels)# 创建数据集
dataset = TensorDataset(tokenized_texts['input_ids'], tokenized_texts['attention_mask'], labels)# 创建数据加载器
batch_size = 2
dataloader = DataLoader(dataset, batch_size=batch_size, shuffle=True)# 设置训练设备
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model.to(device)# 定义优化器和损失函数
optimizer = torch.optim.AdamW(model.parameters(), lr=1e-5)
criterion = torch.nn.CrossEntropyLoss()# 训练模型
epochs = 3
for epoch in range(epochs):for input_ids, attention_mask, labels in dataloader:input_ids, attention_mask, labels = input_ids.to(device), attention_mask.to(device), labels.to(device)optimizer.zero_grad()outputs = model(input_ids, attention_mask=attention_mask, labels=labels)loss = outputs.lossloss.backward()optimizer.step()# 测试模型
model.eval()
with torch.no_grad():test_texts = ["This is a test sentence.", "Another test sentence."]tokenized_test_texts = tokenizer(test_texts, padding=True, truncation=True, return_tensors='pt')input_ids = tokenized_test_texts['input_ids'].to(device)attention_mask = tokenized_test_texts['attention_mask'].to(device)outputs = model(input_ids, attention_mask=attention_mask)logits = outputs.logitspredictions = torch.argmax(logits, dim=1)print("Predictions:", predictions.tolist())

http://www.lryc.cn/news/301602.html

相关文章:

  • Swift 5.9 新 @Observable 对象在 SwiftUI 使用中的陷阱与解决
  • 分享一个学英语的网站
  • 【动态规划】【C++算法】2742. 给墙壁刷油漆
  • 【后端高频面试题--设计模式上篇】
  • P3141 [USACO16FEB] Fenced In P题解
  • Android Compose 一个音视频APP——Magic Music Player
  • Nginx实战:安装搭建
  • Qt之条件变量QWaitCondition详解(从使用到原理分析全)
  • OpenSource - 一站式自动化运维及自动化部署平台
  • 【后端高频面试题--设计模式下篇】
  • 这才是大学生该做的副业,别再痴迷于游戏了!
  • Ubuntu20.04 安装jekyll
  • AWK语言
  • 精通Nmap:网络扫描与安全的终极武器
  • Java 学习和实践笔记(11)
  • 开发实体类
  • 人工智能学习与实训笔记(十五):Scikit-learn库的基础与使用
  • 插值与拟合算法介绍
  • 下一代Windows系统曝光:基于GPT-4V,Agent跨应用调度,代号UFO
  • 二.自定义头文件
  • 【AIGC】Stable Diffusion之模型微调工具
  • 探索未来科技前沿:深度学习的进展与应用
  • PTA | Wifi密码
  • Linux中gdb使用说明书
  • LInux——开发工具的使用
  • 沁恒CH32V30X学习笔记03--64位systick
  • 【JavaEE】IP协议
  • 计算机网络-数据通信基础
  • 【lesson53】线程控制
  • TypeScript(一):TypeScript基本理解