如何提取传入TensorFlow函数的所有参数?以Adam优化器为例
提取TensorFlow优化器的参数名及配置
针对你遇到的问题,TensorFlow/Keras提供了官方方法来提取优化器(或其他Keras组件)的配置参数,无需手动过滤dir()的冗余输出:
核心方法:get_config()
所有Keras优化器(包括Adam)都实现了get_config()方法,它会返回一个包含所有配置参数的字典,其中键就是你需要的参数名,值对应参数的设置值。
示例代码
import tensorflow as tf # 初始化优化器 optimizer = tf.keras.optimizers.Adam(learning_rate=0.001, beta_1=0.9,beta_2=0.999, epsilon=1e-07, amsgrad=False, name="Adam") # 获取配置字典 optimizer_config = optimizer.get_config() # 提取参数名列表 param_names = list(optimizer_config.keys()) print(param_names) # 输出:['name', 'learning_rate', 'beta_1', 'beta_2', 'epsilon', 'amsgrad']
访问具体参数值
拿到参数名后,你有两种便捷方式获取对应的值:
- 从配置字典中直接取值:
optimizer_config['learning_rate'] - 直接通过优化器的属性访问:
optimizer.learning_rate
扩展到其他Keras组件
这个方法同样适用于损失函数、模型层等其他Keras组件,比如查看损失函数的参数:
loss_fn = tf.keras.losses.CategoricalCrossentropy(from_logits=True) print(loss_fn.get_config().keys())
为什么之前的方法无效?
.keys()仅适用于字典类型,优化器对象不是字典,因此报错.__class__(你提到的.classes()应该是指这个)只能获取类的元信息,无法拿到实例的参数配置dir(optimizer)会返回对象的所有属性和方法,包括大量内部私有方法(如__init__、__call__),过滤成本高;而get_config()是官方封装的专用配置提取方法,更高效可靠。
内容的提问来源于stack exchange,提问作者deijany91
相关产品推荐
相关产品推荐

