KerasTuner:超参数调优 / API 文档 / 超模型 / 基础 HyperModel 类

基础 HyperModel 类

[源代码]

HyperModel

keras_tuner.HyperModel(name=None, tunable=True)

定义模型的搜索空间。

搜索空间是模型的集合。build 函数将使用给定的 HyperParameters 对象构建空间中的一个模型。

用户应继承 HyperModel 类,通过重写 build() 方法来定义其搜索空间,该方法创建并返回 Keras 模型。另外,您还可以重写 fit() 方法以自定义模型的训练过程。

示例

build() 方法中,您可以使用超参数创建模型。

class MyHyperModel(kt.HyperModel):
    def build(self, hp):
        model = keras.Sequential()
        model.add(keras.layers.Dense(
            hp.Choice('units', [8, 16, 32]),
            activation='relu'))
        model.add(keras.layers.Dense(1, activation='relu'))
        model.compile(loss='mse')
        return model

当重写 HyperModel.fit() 方法时,如果您使用 model.fit() 来训练您的模型,该方法返回训练历史记录,您可以直接返回它。您可以使用 hp 来指定要调优的任何超参数。

class MyHyperModel(kt.HyperModel):
    def build(self, hp):
        ...

    def fit(self, hp, model, *args, **kwargs):
        return model.fit(
            *args,
            epochs=hp.Int("epochs", 5, 20),
            **kwargs)

如果您有自定义的训练过程,您可以将目标值作为浮点数返回。

如果您想跟踪更多指标,您可以返回一个包含要跟踪指标的字典。

class MyHyperModel(kt.HyperModel):
    def build(self, hp):
        ...

    def fit(self, hp, model, *args, **kwargs):
        ...
        return {
            "loss": loss,
            "val_loss": val_loss,
            "val_accuracy": val_accuracy
        }

参数

  • name:可选字符串,此 HyperModel 的名称。
  • tunable:布尔值,表示在此超模型中定义的超参数是否应添加到搜索空间。如果为 False,则这些参数的搜索空间必须提前定义,否则将使用默认值。默认为 True。

[源代码]

build 方法

HyperModel.build(hp)

构建一个模型。

参数

  • hp:一个 HyperParameters 实例。

返回值

一个模型实例。