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

使用tfa.optimizers.AdamW报错weight_decay收到多个参数如何解决?

问题原因

TensorFlow Addons 中 AdamW 优化器的参数定义顺序和 Keras 原生 Adam 不同:AdamW 的第一个位置参数是 weight_decay,而非 learning_rate。
你当前的写法将自定义学习率调度器作为第一个位置参数传入,相当于给 weight_decay 隐式传了一次值,随后又显式指定了 weight_decay=0.1,导致同一个参数收到两个赋值,触发类型错误。

解决方法

两种修改方式任选即可,更推荐第一种显式指定参数名的写法,可读性更高、不易出错:

  • 显式指定 learning_rate 的参数名,不依赖位置传参:
optimizer = tfa.optimizers.AdamW(learning_rate=learning_rate, weight_decay=0.1)
  • 按照 AdamW 的参数顺序传参,先传 weight_decay 再传 learning_rate:
optimizer = tfa.optimizers.AdamW(0.1, learning_rate)

额外优化建议:你自定义的学习率调度器中使用了 np.pi,建议替换为 tf.constant(np.pi, dtype=tf.float32),避免TensorFlow构建静态计算图时出现张量类型不匹配的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 21:48:05