BERT情感分类

参考B站BigC_666微调BERT模型做情感分类实战,代码逐行讲解,100%可以跑通!!! 一键三连+关注,私信即可获得代码_哔哩哔哩_bilibili

大致记录下出现了哪些问题

首先第一个问题是,huggingface.co无法访问,通过修改环境变量让目标地址改到镜像地址也没起作用,最终解决方案是挂代理下载了

复制代码
import os
os.environ['HTTP_PROXY'] = 'http://127.0.0.1:7890'
os.environ['HTTPS_PROXY'] = 'http://127.0.0.1:7890'

后面就是jupyter代码了,修改了评估的部分

python 复制代码
from datasets import load_dataset

import os

import os
os.environ['HTTP_PROXY'] = 'http://127.0.0.1:7890'
os.environ['HTTPS_PROXY'] = 'http://127.0.0.1:7890'


os.environ['HF_ENDPOINT'] = 'https://hf-mirror.com'
dataset = load_dataset("imdb")
print(dataset)

import datasets
print(datasets.config.HF_DATASETS_CACHE)

from transformers import BertTokenizer
tokenizer = BertTokenizer.from_pretrained("bert-base-uncased")
print("done")
def tokenizer_func(examples):
    return tokenizer(examples['text'],padding='max_length',truncation=True)
tokens_dataset = dataset.map(tokenizer_func,batched=True)
print(tokens_dataset)
print(tokens_dataset['train'][0])
train_dataset = tokens_dataset['train'].select(range(5000))
test_dataset = tokens_dataset['test'].shuffle(42).select(range(5000))
print(test_dataset['label'])

from transformers import BertForSequenceClassification

classifier = BertForSequenceClassification.from_pretrained('bert-base-uncased')

from transformers import Trainer,TrainingArguments

train_arg = TrainingArguments(
    output_dir='./result',
#    eval_strategy='epoch',
    learning_rate=2e-5,
    per_device_train_batch_size=1,
    per_device_eval_batch_size=1,
    num_train_epochs=1,
    weight_decay=0.02
)
print('done')

print('start')
trainer = Trainer(
    model = classifier,
    args = train_arg,
    train_dataset = train_dataset,
    eval_dataset = test_dataset
)
print('done')

predictions = trainer.predict(test_dataset)

import numpy as np
print('start')
# 模型输出的预测 logits(二维数组)
logits = predictions.predictions  # shape: (num_samples, num_classes)
labels = predictions.label_ids    # shape: (num_samples,)

# 步骤1:将 logits 转换为预测标签(取最大值所在的索引)
predicted_labels = np.argmax(logits, axis=1)

# 步骤2:计算准确率
accuracy = np.mean(predicted_labels == labels)

print(f"Accuracy: {accuracy:.4f}")


trainer.train()

# metric = trainer.evaluate()
print(test_dataset['label'])

predictions = trainer.predict(test_dataset)

print(metric)

print(predictions)

from transformers import Trainer
from sklearn.metrics import accuracy_score
import numpy as np

# 1. 定义 compute_metrics
def compute_metrics(eval_pred):
    predictions, labels = eval_pred
    preds = np.argmax(predictions, axis=1)
    return {"accuracy": accuracy_score(labels, preds)}

# 2. 重新构造 Trainer(用原来的模型和训练参数)
new_trainer = Trainer(
    model=classifier,  # 你之前训练好的模型
    args=train_arg,   # 你原来使用的 TrainingArguments
    compute_metrics=compute_metrics
)

# 3. 调用 predict
results = new_trainer.predict(test_dataset)

print("准确率:", results.metrics["test_accuracy"])

代码比较混乱,可读性比较差,实验性质,各种参数没有详细的考量

相关推荐
点云SLAM43 分钟前
Eigen 中矩阵的拼接(Concatenation)与 分块(Block Access)操作使用详解和示例演示
人工智能·线性代数·算法·矩阵·eigen数学工具库·矩阵分块操作·矩阵拼接操作
木枷2 小时前
NAS-Bench-101: Towards Reproducible Neural Architecture Search
人工智能·物联网
BAOYUCompany2 小时前
暴雨服务器更懂人工智能+
运维·服务器·人工智能
飞哥数智坊2 小时前
Coze实战第17讲:工资条自动拆分+一对一邮件发送
人工智能·coze
cwn_2 小时前
自然语言处理NLP (1)
人工智能·深度学习·机器学习·自然语言处理
点云SLAM3 小时前
PyTorch中flatten()函数详解以及与view()和 reshape()的对比和实战代码示例
人工智能·pytorch·python·计算机视觉·3d深度学习·张量flatten操作·张量数据结构
智海观潮3 小时前
Unity Catalog与Apache Iceberg如何重塑Data+AI时代的企业数据架构
大数据·人工智能·ai·iceberg·catalog
爱分享的飘哥3 小时前
第三篇:VAE架构详解与PyTorch实现:从零构建AI的“视觉压缩引擎”
人工智能·pytorch·python·aigc·教程·生成模型·代码实战
柏峰电子3 小时前
市政道路积水监测系统:守护城市雨天出行安全的 “智慧防线”
大数据·人工智能·安全
蓑雨春归3 小时前
自主智能Agent如何重塑工作流自动化:技术、经济与未来展望
人工智能·chatgpt·自动化