Keras Tuner是一个库。Tuner 组件用于调节模型的超参数。为您的机器学习(ML)应用程序选择正确的超参数集的过程称为超参数调整或超调整。Tuner 组件广泛使用 Python KerasTuner API 来调节超参数。注:无论建模 API 如何,KerasTuner 库都可用于超参数调节,而不仅限于 Keras 模型。
超参数是控制训练过程和ML模型的拓扑的变量。 这些变量在训练过程中保持不变,并直接影响ML程序的性能。 超参数有两种类型:
- 模型超参数,例如隐藏层的数量和宽度
- 算法超参数,例如随机梯度下降(SGD)的学习率以及k个最近邻(KNN)分类器的最近邻居数
在本教程中,您将使用Keras Tuner对图像分类应用程序执行超调。
使用方法
当构建用于调整超参数的模型时,除了模型架构之外,还要定义超参数搜索空间。 超调优设置的模型称为超模型。
可以通过两种方法定义超模型:
- 通过使用模型构建器功能
- 通过子类化Keras Tuner API的HyperModel类
此外,还可以将两个预定义的HyperModel类-HyperXception和HyperResNet用于计算机视觉应用程序。
下面将使用模型构建器功能来定义图像分类模型。 模型构建器函数返回已编译的模型,并使用内联定义的超参数对模型进行超调。
def model_builder(hp):
model = keras.Sequential()
model.add(keras.layers.Flatten(input_shape=(28, 28)))
# 微调第一个隐藏层的神经节点数
# 将搜索区间定义在[32, 512]内
hp_units = hp.Int('units', min_value = 32, max_value = 512, step = 32)
model.add