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

使用PolynomialDecay与Adam微调Transformer时遇优化器识别错误求助

问题分析与解决

这个错误的核心是Keras 3与TensorFlow 2.16的导入兼容性问题,或是模型类型(如Hugging Face Transformers模型)与优化器的适配冲突。以下是具体解决方法:


解决方法1:统一使用Keras 3原生导入路径

TensorFlow 2.16绑定的是Keras 3,tensorflow.keras是Keras 3的包装层,但混合两类导入会导致对象不兼容。将所有导入替换为Keras 3原生路径:

from keras.optimizers.schedules import PolynomialDecay
from keras.losses import SparseCategoricalCrossentropy
from keras.optimizers import Adam
import tensorflow as tf

num_epochs = 3
num_train_steps = len(tf_train_dataset) * num_epochs

lr_scheduler = PolynomialDecay(initial_learning_rate=5e-5,
                              end_learning_rate=0.0,
                              decay_steps=num_train_steps,
                              power=2)

opt = Adam(learning_rate=lr_scheduler)
loss = SparseCategoricalCrossentropy(from_logits=True)
model.compile(optimizer=opt, loss=loss, metrics=["accuracy"])

解决方法2:适配Hugging Face Transformers模型(若使用该库)

如果微调的是Hugging Face的Transformer模型(如TFBertForSequenceClassification),旧版本Transformers对Keras 3优化器支持存在缺陷:

  1. 升级Transformers到最新兼容版本:
pip install --upgrade transformers
  1. 若升级后仍报错,将优化器转为字典配置形式传入:
# 获取学习率调度器的配置信息
lr_scheduler_config = lr_scheduler.get_config()
# 构建优化器字典配置
optimizer_config = {
    "optimizer": "Adam",
    "config": {
        "learning_rate": lr_scheduler_config
        # 可按需添加Adam的其他参数,如beta_1、beta_2等
    }
}
model.compile(optimizer=optimizer_config, loss=loss, metrics=["accuracy"])

解决方法3:确保模型兼容性

如果是自定义模型,需确保继承自keras.Model或tf.keras.Model,而非TensorFlow低级API(如tf.Module)——后者的compile方法对Keras优化器的支持有限。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 23:18:16