You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复BERT情感分析代码中已弃用的AdamW优化器?

解决Transformers中AdamW弃用警告的两种方案

方案一:使用Trainer API(推荐,适配框架未来更新)

这是Transformers官方推荐的方式,直接通过TrainingArguments指定PyTorch原生AdamW,无需手动构建optimizer:

  1. 导入所需类:
from transformers import TrainingArguments, Trainer
  1. 配置训练参数,重点设置optim="adamw_torch":
training_args = TrainingArguments(
    output_dir="./results",  # 训练结果输出目录
    learning_rate=1e-5,
    per_device_train_batch_size=8,
    num_train_epochs=3,
    optim="adamw_torch",  # 指定使用PyTorch原生AdamW
    weight_decay=0.01,  # 全局权重衰减,如需针对不同参数设置不同衰减可参考进阶配置
)
  1. 初始化Trainer并启动训练:
trainer = Trainer(
    model=model,
    args=training_args,
    train_dataset=train_dataset,  # 你的训练数据集
    eval_dataset=eval_dataset,    # 可选,验证数据集
)

trainer.train()

如果需要针对bias、gamma这类参数设置无衰减的权重策略,可以通过model_init自定义模型参数分组后传入Trainer,大部分场景下全局权重衰减设置已能满足需求。

方案二:手动使用PyTorch原生AdamW(自定义训练循环)

你之前的尝试失败有两个核心问题:导入了第三方torch_optimizer库,且参数名用错(PyTorch原生AdamW用weight_decay而非weight_decay_rate)。修正后的代码如下:

  1. 修正导入语句:
# 删除 import torch_optimizer as optim
import torch.optim as optim  # 导入PyTorch原生优化器
# 删除 from transformers import AdamW
  1. 修改参数分组的键名:
param_optimizer = list(model.named_parameters())
no_decay = ['bias', 'gamma', 'beta']
optimizer_grouped_parameters = [{
    'params': [p for n, p in param_optimizer if not any(nd in n for nd in no_decay)],
    'weight_decay': 0.01  # 将 weight_decay_rate 改为 weight_decay
}, {
    'params': [p for n, p in param_optimizer if any(nd in n for nd in no_decay)],
    'weight_decay': 0.0
}]
  1. 创建PyTorch原生AdamW优化器:
optimizer = optim.AdamW(optimizer_grouped_parameters, lr=1e-5)

修改后即可彻底消除弃用警告,同时使用PyTorch官方维护的AdamW实现。

内容的提问来源于stack exchange,提问作者Panco

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 18:36:25