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

如何查看Keras(TF2)自定义优化器中层变量的slots槽变量取值

查看自定义优化器slot槽变量的方法

完全可以直接通过优化器实例的内置方法读取,步骤非常简单:

  1. 首先保留训练时使用的自定义优化器实例(比如你初始化的opt = YourCustomOptimizer()对象)
  2. 拿到你要查询slot对应的模型权重变量,比如某层的kernel/bias变量
  3. 调用优化器的get_slot(var, slot_name)方法即可获取对应槽变量,调用.numpy()可转为普通numpy数组查看数值

代码示例

单变量查询:

# 取模型第3层的kernel权重作为目标变量
target_var = model.layers[2].kernel

# 读取对应squared_gradient_ma槽变量
squared_gradient_ma = opt.get_slot(target_var, "squared_gradient_ma")
print(squared_gradient_ma.numpy())

# 读取对应squared_param_ma槽变量
squared_param_ma = opt.get_slot(target_var, "squared_param_ma")
print(squared_param_ma.numpy())

批量遍历所有可训练参数的槽变量:

for var in model.trainable_variables:
    print(f"当前变量名:{var.name}")
    print(f"梯度平方移动平均值:\n{opt.get_slot(var, 'squared_gradient_ma').numpy()}")
    print(f"参数平方移动平均值:\n{opt.get_slot(var, 'squared_param_ma').numpy()}")
    print("-"*60)

注意事项

  • 只有你创建slot时包含的变量(默认是所有可训练参数)才能读到对应slot,trainable=False的变量默认不会生成slot
  • 如果你是从checkpoint加载训练好的优化器,只要完整加载了优化器状态,也可以用同样方法读取slot数值,不需要重新训练

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 14:18:01