Keras Tuner是否可用于非模型相关超参数的调优?
Keras Tuner 完全支持你提到的三类非模型超参数的调优,核心逻辑是 HyperParameters(简称hp)对象的作用范围覆盖单轮试验(Trial)的完整生命周期,不需要把超参数定义局限在模型构建函数内。
1. 数据增强参数调优
你可以将数据增强逻辑封装为接收hp对象的函数,在每轮试验构建数据集 pipeline 时传入当前试验的hp实例,读取对应超参数即可。示例逻辑如下:
- 首先在流程中定义增强超参数:
hp.Float("translation_range", min_value=0.1, max_value=0.3, step=0.05) - 把读取到的参数传入数据增强逻辑,不管你是将增强逻辑放在
tf.data.Dataset.map回调中,还是封装为模型预处理层,都可以直接使用该参数值。
2. 过/欠采样权重参数调优
tf.data.Dataset.sample_from_datasets的weights参数同样支持通过hp定义调优:
- 根据你的类别数量定义对应的权重超参数,比如二分类场景可以定义
hp.Float("positive_sample_weight", min_value=0.2, max_value=0.8, step=0.1) - 构造采样权重数组时直接读取该超参数值,传入
sample_from_datasets方法即可 - 注意需要把数据集构建逻辑放到单轮试验的执行流程中,你可以通过自定义
Tuner的run_trial方法实现,每轮试验都会用当前超参数生成对应的数据 pipeline。
3. 训练轮数(Epochs)参数调优
不需要通过回调间接实现,直接在model.fit调用时读取hp中定义的轮数参数即可:
- 定义超参数:
hp.Int("train_epochs", min_value=10, max_value=100, step=10) - 把读取到的参数直接传给
model.fit的epochs参数即可完成调优 - 若搭配
EarlyStopping回调使用,可以把该参数作为训练轮数上限,避免多余的训练开销。
内容的提问来源于stack exchange,提问作者kawingkelvin
相关产品推荐
相关产品推荐

