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

Keras/TensorFlow中Adam优化器CNN学习率衰减回调报错如何解决?

解决Adam优化器获取衰减学习率的AttributeError问题

问题原因

_decayed_lr是TensorFlow优化器的私有内部方法,不属于公开API范畴,不同版本的TensorFlow或优化器实现可能不会暴露该属性,直接调用会触发AttributeError。

解决方案

改用优化器的**公开属性learning_rate**获取当前衰减后的学习率,该方式兼容固定学习率和学习率调度器(如指数衰减、步长衰减等)场景,同时避免版本兼容问题。

修改后的自定义回调代码:

class CustomCallback(tf.keras.callbacks.Callback):
    def on_epoch_begin(self, epoch, logs=None):
        lr = self.model.optimizer.learning_rate
        # 若学习率是可调用的调度器,传入当前迭代步数计算衰减后的值
        if callable(lr):
            current_decayed_lr = lr(self.model.optimizer.iterations).numpy()
        else:
            current_decayed_lr = lr.numpy()
        print("current decayed lr: {:0.7f}".format(current_decayed_lr))

补充说明

  • 若使用TensorFlow 2.x早期版本,也可通过tf.keras.backend.get_value()获取学习率:
    current_decayed_lr = tf.keras.backend.get_value(self.model.optimizer.learning_rate)
    
  • 永远避免直接访问以下划线开头的私有属性(如_decayed_lr),这类属性属于内部实现细节,无版本兼容性保障,随时可能被调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 00:11:19