HyperModel
基类使搜索空间更易于封装,以便于共享和重用。HyperModel
子类只需要实现一个 build(self, hp)
方法,该方法使用 hp
参数来定义超参数,并创建一个 keras.Model
实例,并返回模型实例。以下是一个简单的代码示例。
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
实例作为搜索空间传递给 Tuner
。
tuner = kt.RandomSearch(
MyHyperModel(),
objective='val_loss',
max_trials=5)
还有一些内置的 HyperModel
子类(例如 HyperResNet
、HyperXception
),供用户直接使用,这样用户就不需要编写自己的搜索空间。
tuner = kt.RandomSearch(
HyperResNet(input_shape=(28, 28, 1), classes=10),
objective='val_loss',
max_trials=5)