【已解决】ImportError: cannot import name ‘AdamW‘ from ‘transformers.optimization‘

ImportError: cannot import name 'AdamW' from 'transformers.optimization' (C:\Users\qiaolikui.conda\envs\know\lib\site-packages\transformers\optimization.py) Process finished with exit code 1

这个报错说明:你当前安装的 transformers 版本里,已经彻底不再提供 AdamW 了,所以无论:

python 复制代码
from transformers import AdamW

还是:

python 复制代码
from transformers.optimization import AdamW

都会报错。

现在最稳妥的修改方法是:不用 transformers 里的 AdamW,改用 PyTorch 自带的 AdamW。


把你 main.py 里的这两行:

python 复制代码
from transformers import BertTokenizer
from transformers.optimization import AdamW, get_linear_schedule_with_warmup

改成:

python 复制代码
from transformers import BertTokenizer, get_linear_schedule_with_warmup
from torch.optim import AdamW

也就是最终导入部分应该类似这样:

python 复制代码
import os
import json
import torch
import numpy as np

from config import NerConfig
from model import BertNer
from data_loader import NerDataset

from tqdm import tqdm
from seqeval.metrics import classification_report
from torch.utils.data import DataLoader
from torch.optim import AdamW
from transformers import BertTokenizer, get_linear_schedule_with_warmup

原因很简单:

你的代码里这里用了 AdamW:

python 复制代码
optimizer = AdamW(
    optimizer_grouped_parameters,
    lr=args.bert_learning_rate,
    eps=args.adam_epsilon
)

以前老版本 transformers 可以这样导入:

python 复制代码
from transformers import AdamW

但是新版本已经移除了,所以现在要改成:

python 复制代码
from torch.optim import AdamW

如果你不想改代码,也可以直接降级 transformers:

bash 复制代码
pip install transformers==4.31.0

但是我更建议你直接用上面的代码修改方法,因为 torch.optim.AdamW 是现在更稳定的写法。

你先把导入部分改成这个:

python 复制代码
from torch.optim import AdamW
from transformers import BertTokenizer, get_linear_schedule_with_warmup

然后重新运行。

相关推荐
码流子5 分钟前
02-易迁信创兼容引擎
大数据·数据库·python
kimnoic10 分钟前
Python常见模块及其用法示例详解
开发语言·python
databook13 分钟前
Scikit-Learn实战:5步搞定PCA降维
python·机器学习·scikit-learn
溪语流沙32 分钟前
【Web全栈进阶】JWT无状态认证:签发、校验、刷新
前端·git·python·github
reasonsummer36 分钟前
【办公类-112-08】20261009园园通信息合并配学号拆班(数据更新,用年月日期区分版本)
python
阿狗童鞋40 分钟前
Python爬虫进阶实战指南
开发语言·爬虫·python
中原第一高手1 小时前
fofatoto 1.8.0 发布:启动即知新版本、中文进度面板与更干净的 Web 日志
python·网络安全·开源·资产测绘·fofa
APIshop1 小时前
淘宝详情接口全解析:从官方开放平台到第三方数据服务
java·python·api
老歌老听老掉牙1 小时前
两个平面旋转平移坐标系间的坐标变换关系
python·算法·平面·旋转·平移
FITA阿泽要努力1 小时前
第 1 周·第 3 讲|工具如何交给模型:工具定义、参数与结构化调用
服务器·数据库·python·agent