Path: blob/master/site/zh-cn/tutorials/keras/keras_tuner.ipynb
25118 views
Copyright 2020 The TensorFlow Authors.
Keras Tuner 简介
概述
Keras Tuner 是一个库,可帮助您为 TensorFlow 程序选择最佳的超参数集。为您的机器学习 (ML) 应用选择正确的超参数集,这一过程称为超参数调节或超调。
超参数是控制训练过程和 ML 模型拓扑的变量。这些变量在训练过程中保持不变,并会直接影响 ML 程序的性能。超参数有两种类型:
模型超参数:影响模型的选择,例如隐藏层的数量和宽度
算法超参数:影响学习算法的速度和质量,例如随机梯度下降 (SGD) 的学习率以及 k 近邻 (KNN) 分类器的近邻数
在本教程中,您将使用 Keras Tuner 对图像分类应用执行超调。
设置
安装并导入 Keras Tuner。
下载并准备数据集
在本教程中,您将使用 Keras Tuner 为某个对 Fashion MNIST 数据集内的服装图像进行分类的机器学习模型找到最佳超参数。
加载数据。
定义模型
构建用于超调的模型时,除了模型架构之外,还要定义超参数搜索空间。您为超调设置的模型称为超模型。
您可以通过两种方式定义超模型:
使用模型构建工具函数
将 Keras Tuner API 的
HyperModel
类子类化
您还可以将两个预定义的 HyperModel
类 HyperXception 和 HyperResNet 用于计算机视觉应用。
在本教程中,您将使用模型构建工具函数来定义图像分类模型。模型构建工具函数将返回已编译的模型,并使用您以内嵌方式定义的超参数对模型进行超调。
实例化调节器并执行超调
实例化调节器以执行超调。Keras Tuner 提供了四种调节器:RandomSearch
、Hyperband
、BayesianOptimization
和 Sklearn
。在本教程中,您将使用 Hyperband 调节器。
要实例化 Hyperband 调节器,必须指定超模型、要优化的 objective
和要训练的最大周期数 (max_epochs
)。
Hyperband 调节算法使用自适应资源分配和早停法来快速收敛到高性能模型。该过程采用了体育竞技争冠模式的排除法。算法会将大量模型训练多个周期,并仅将性能最高的一半模型送入下一轮训练。Hyperband 通过计算 1 + logfactor
(max_epochs
) 并将其向上舍入到最接近的整数来确定要训练的模型的数量。
创建回调以在验证损失达到特定值后提前停止训练。
运行超参数搜索。除了上面的回调外,搜索方法的参数也与 tf.keras.model.fit
所用参数相同。
训练模型
使用从搜索中获得的超参数找到训练模型的最佳周期数。
重新实例化超模型并使用上面的最佳周期数对其进行训练。
要完成本教程,请在测试数据上评估超模型。
my_dir/intro_to_kt
目录中包含了在超参数搜索期间每次试验(模型配置)运行的详细日志和检查点。如果重新运行超参数搜索,Keras Tuner 将使用这些日志中记录的现有状态来继续搜索。要停用此行为,请在实例化调节器时传递一个附加的 overwrite = True
参数。
总结
在本教程中,您学习了如何使用 Keras Tuner 调节模型的超参数。要详细了解 Keras Tuner,请查看以下其他资源:
另请查看 TensorBoard 中的 HParams Dashboard,以交互方式调节模型超参数。