如何让KerasTuner跳过超参搜索直接构建默认参数模型
KerasTuner直接使用默认超参数构建模型的实现方法
核心原理
Keras Tuner的HyperParameters实例在首次读取未定义的超参数时,会自动使用你在hp.choice/hp.Int/hp.Float等方法中设置的default参数值,基于这个特性可以快速构建全默认参数的模型。
实现方法
方法1:无需修改现有代码,直接构造默认超参数对象
仅需新增两行代码即可实现需求,不用调整原有HyperModel和调优逻辑:
from keras_tuner import HyperParameters # 初始化空的超参数对象,会自动读取所有default值 default_hp = HyperParameters() default_model = tuner.hypermodel.build(default_hp)
方法2:封装为你期望的use_default_parameter调用方式
如果需要实现你提到的直接传参开关的调用格式,修改你的MyHyperModel的build方法即可:
from keras_tuner import HyperModel, HyperParameters class MyHyperModel(HyperModel): # 新增参数开关 def build(self, hp=None, use_default_parameter=False): if use_default_parameter or hp is None: hp = HyperParameters() # 原有模型构建逻辑不变 hp.choice('hyperparameter', [1,2,3], default=3) # ... 其他超参数定义、模型构建代码 return model
修改后即可直接用你期望的方式调用:
default_model = tuner.hypermodel.build(use_default_parameter=True)
注意事项
- 所有超参数定义时必须显式指定
default参数,避免不同版本KerasTuner默认行为不一致导致取值错误 - 原有超参数搜索、最优模型构建逻辑不受影响,仍可以照常传入搜索得到的
best_hp构建最优模型
内容的提问来源于stack exchange,提问作者Hauke
相关产品推荐
相关产品推荐

