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

如何获取并修改Keras模型学习率?打印optimizer.lr仅返回变量对象

如何正确查看和修改Keras模型的学习率

嘿,你直接打印ig_cnn_model.optimizer.lr的方法确实不对——你看到的<tf.Variable 'lr_6:0' shape=() dtype=float32_ref>只是TensorFlow变量的引用信息,不是实际的学习率数值。下面给你讲讲正确的操作方式:

一、查看当前学习率

根据你的使用场景,分两种情况处理:

  • 静态学习率(未使用学习率调度器):直接调用numpy()方法获取实际数值:
    print(ig_cnn_model.optimizer.lr.numpy())
    
  • 动态学习率(使用了ReduceLROnPlateau、StepLR等调度器):此时optimizer.lr存储的可能是初始学习率,当前生效的是经过调度器衰减后的结果,需要用这个方法获取:
    import tensorflow as tf
    print(ig_cnn_model.optimizer._decayed_lr(tf.float32).numpy())
    

二、修改学习率

同样分场景操作:

  • 直接修改静态学习率:用assign()方法给lr变量赋值即可:
    # 示例:将学习率设置为0.0001
    ig_cnn_model.optimizer.lr.assign(0.0001)
    
  • 修改动态学习率(临时覆盖调度器):如果想强制设置一个新的学习率,同样可以用assign()方法,之后调度器会基于这个新值继续按规则调整。如果需要调整调度器的参数,建议重新定义调度器并关联模型,但训练中途调整参数比较繁琐,优先推荐assign方式。
  • 避坑提醒:训练中途不要轻易重新编译模型(比如model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=new_lr))),这会重置模型的训练状态,之前200个epoch的训练成果会白费。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:56:45