Keras深度学习框架第三十二讲:KerasTuner API(1)

2024-05-29 19:36

本文主要是介绍Keras深度学习框架第三十二讲:KerasTuner API(1),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、KerasTuner API概述

KerasTuner API 是 Keras 提供的一个用于超参数调优的框架。以下是您给出的描述的详细翻译和解释:

1.1 Hyperparameters 类

Hyperparameters 类用于指定一组超参数及其值,这些超参数将在模型构建函数中使用。在 KerasTuner 中,您可以通过这个类定义您希望搜索的超参数空间,例如学习率、批量大小、网络层数等。

1.2 Tuner 子类

与不同调优算法相对应的 Tuner 子类是由用户直接调用的,以启动搜索或获取最佳模型。例如,RandomSearchHyperbandBayesianOptimizationTuner 的几个子类,分别实现随机搜索、Hyperband 算法和贝叶斯优化等搜索策略。

1.3 Oracle 子类

Oracle 子类是核心搜索算法,它们从 Tuner 接收模型评估结果,并基于这些结果提供新的超参数值。Oracle 在超参数调优过程中起着“顾问”的角色,它根据先前的评估结果来决定下一步应该尝试哪些超参数值。

1.4 HyperModel 子类

HyperModel 子类为某些模型家族(如 ResNet 和 XceptionNet)预定义了搜索空间。这些子类封装了特定类型的网络架构,并为这些网络提供了默认的超参数搜索范围。通过继承这些子类,用户可以轻松地为特定类型的模型定义搜索空间,而不必从头开始编写所有的超参数定义和模型构建代码。

KerasTuner 提供了一个灵活的框架,用于定义超参数搜索空间、选择搜索算法以及快速构建和评估多种不同的模型配置。

2、Hyperparameters 类

2.1 HyperParameters 类

keras_tuner.HyperParameters()

HyperParameters 是一个容器,用于存储超参数空间和当前值。一个 HyperParameters 实例可以作为参数传递给 HyperModel.build(hp) 方法来构建模型。

为了防止用户依赖于非活动的超参数值,只有活动的超参数才应该在 HyperParameters.values 中具有值。

以下是属性的翻译和解释:

  • space:一个 HyperParameter 对象的列表。这个列表定义了超参数空间,即所有可能的超参数及其可能的取值范围或选项。
  • values:一个字典,将超参数名称映射到当前值。这个字典只包含当前活动(即正在被考虑或已设置)的超参数的值。如果一个超参数在当前的搜索过程中是非活动的(例如,由于之前的搜索步骤已经确定了它的值),那么它就不应该出现在 values 字典中。

通过这种方式,HyperParameters 类提供了一种结构化的方式来管理和操作超参数,使得在模型构建过程中能够清晰、有效地利用这些参数。

2.2 Boolean 方法

HyperParameters.Boolean(name, default=False, parent_name=None, parent_values=None)

这是一个关于在True和False之间选择的超参数的描述。

参数

  • name:一个字符串。参数的名称。在搜索空间中,每个HyperParameter实例的名称必须唯一。
  • default:布尔值,参数的默认值。如果未指定,则默认值将为False。
  • parent_name:可选的字符串,指定父HyperParameter的名称,用作激活当前HyperParameter的条件。
  • parent_values:可选的列表,包含父HyperParameter的值,用作激活当前HyperParameter的条件。

返回值

  • 超参数的值,如果超参数不活动则返回None。

解释

这个描述是关于一个能够在True和False之间选择的超参数的。通过定义name来唯一标识这个超参数,并且可以通过default参数来指定一个默认值(默认为False)。如果当前超参数的激活依赖于另一个超参数(即父超参数),可以通过parent_nameparent_values来指定这个依赖关系。如果父超参数具有parent_values中列出的某个值,那么当前超参数将被激活,并返回其值(True或False)。如果当前超参数不活动,则返回None。

2.3 Choice 方法

HyperParameters.Choice(name, values, ordered=None, default=None, parent_name=None, parent_values=None
)

选择一个值,该值来自预定义的可能值集合。

参数

  • name: 字符串。参数的名称。在搜索空间中,每个HyperParameter实例的名称必须是唯一的。
  • values: 可能值的列表。值必须是整数、浮点数、字符串或布尔值。所有值必须为同一类型。
  • ordered: 可选布尔值,是否应该考虑传递的值具有顺序性。对于浮点数/整数,默认为True。对于其他任何值,必须为False。
  • default: 可选的默认值,用于返回参数的值。如果未指定,默认值将是: 如果None是values中的一个选项,则为None,否则为values中的第一项。
  • parent_name: 可选字符串,指定父HyperParameter的名称,用作激活当前HyperParameter的条件。
  • parent_values: 可选列表,指定父HyperParameter的值,用作激活当前HyperParameter的条件。

返回值

超参数的值,或者如果超参数不活动,则返回None。

2.4 Fixed 方法

HyperParameters.Fixed(name, value, parent_name=None, parent_values=None)

固定且不可调整的值。

参数

  • name: 一个字符串。参数的名称。在搜索空间中,每个HyperParameter实例的name必须唯一。
  • value: 要使用的值(可以是任何可以序列化为JSON的Python类型)。
  • parent_name: 可选字符串,指定作为激活当前HyperParameter条件的父HyperParameter的名称。
  • parent_values: 可选列表,指定作为激活当前HyperParameter条件的父HyperParameter的值。

返回值

该超参数的值,如果超参数未激活则返回None

2.5 Float 方法

HyperParameters.Float(name,min_value,max_value,step=None,sampling="linear",default=None,parent_name=None,parent_values=None,
)

浮点数值超参数(Floating point value hyperparameter),描述指的是一个超参数,其值是一个浮点数(floating point number)。在机器学习或优化问题中,超参数是用来调整模型训练过程的一些设置,这些设置通常不能通过模型训练过程本身来学习。浮点数值超参数允许你指定一个具有小数点的数值作为超参数的值,这在很多情况下都是必要的,比如设置学习率、正则化系数等。

hp.Float("image_rotation_factor",min_value=0,max_value=1)

在区间 [0, 1] 内的所有值被抽样的概率是相等的。

hp.Float("image_rotation_factor",min_value=0,max_value=1,step=0.2)

步长(step)是样本之间的最小距离。可能的值包括 [0, 0.2, 0.4, 0.6, 0.8, 1.0]。

hp.Float("learning_rate",min_value=0.001,max_value=10,step=10,sampling="log")

sampling="log"时,步长(step)在样本之间是以对数方式增加的。可能的值包括 [0.001, 0.01, 0.1, 1, 10]。

参数说明

  • name: 字符串类型。参数的名称。在搜索空间中,每个HyperParameter实例的name必须唯一。
  • min_value: 浮点数,表示范围的下限。
  • max_value: 浮点数,表示范围的上限。
  • step: 可选的浮点数,表示范围内两个连续样本之间的距离。如果未指定,可以在区间内采样任何值。如果sampling="linear",它将是两个样本之间的最小加法步长。如果sampling="log",它将是两个样本之间的最小乘法步长。
  • sampling: 字符串类型。可选值包括 “linear”, “log”, “reverse_log”。默认为 “linear”。当采样值时,它总是从[0.0, 1.0)范围内的某个值开始。sampling参数决定了如何将该值投影到[min_value, max_value]的范围内。“linear”:min_value + value * (max_value - min_value);“log”:min_value * (max_value / min_value) ^ value;“reverse_log”:(max_value - min_value * ((max_value / min_value) ^ (1 - value) - 1))
  • default: 浮点数,当需要返回参数的默认值时使用。如果未指定,默认值将为min_value
  • parent_name: 可选的字符串,指定作为激活当前HyperParameter条件的父HyperParameter的名称。
  • parent_values: 可选的列表,指定作为激活当前HyperParameter条件的父HyperParameter的值。

返回值

超参数的值,如果超参数未激活则返回None

2.6 Int 方法

HyperParameters.Int(name,min_value,max_value,step=None,sampling="linear",default=None,parent_name=None,parent_values=None,
)

整数超参数。

请注意,与Python的range函数不同,max_value被包含在此参数可能取的值中。

hp.Int("n_layers",min_value=6,max_value=12)

可能的值包括 [6, 7, 8, 9, 10, 11, 12]。

hp.Int("n_layers",min_value=6,max_value=13,step=3)

步长(step)是样本之间的最小距离。可能的值包括 [6, 9, 12]。

hp.Int("batch_size",min_value=2,max_value=32,step=2,sampling="log")

sampling="log"时,步长(step)是在样本之间以对数方式增加的。可能的值包括 [2, 4, 8, 16, 32]。

参数说明

  • name: 字符串类型。参数的名称。在搜索空间中,每个HyperParameter实例的name必须唯一。
  • min_value: 整数,范围的下限(包括此值)。
  • max_value: 整数,范围的上限(包括此值)。
  • step: 可选的整数,表示范围内两个连续样本之间的距离。如果未指定,则可能在此区间内采样任何整数。如果sampling="linear",它将是两个样本之间的最小加法步长。如果sampling="log",它将是两个样本之间的最小乘法步长(但在实际实现中,这通常并不直接应用于整数,而是适用于连续值后再转换为整数)。
  • sampling: 字符串类型。可选值包括 “linear”, “log”, “reverse_log”。默认为 “linear”。在采样值时,它总是从一个在范围 [0.0, 1.0) 内的值开始。sampling参数决定了如何将这个值映射到 [min_value, max_value] 的范围内。“linear”: min_value + value * (max_value - min_value),“log” 在整数范围中不直接适用,“reverse_log” 在整数范围中也不直接适用(因为对数函数和指数函数通常用于连续值)。
  • default: 整数,参数的默认值。如果未指定,则默认值为min_value
  • parent_name: 可选的字符串,指定作为激活当前HyperParameter条件的父HyperParameter的名称。
  • parent_values: 可选的列表,指定作为激活当前HyperParameter条件的父HyperParameter的值。

返回值

超参数的值,如果超参数未激活则返回None

2.7 conditional_scope 方法

HyperParameters.conditional_scope(parent_name, parent_values)

开启一个作用域以创建条件超参数。

在此作用域下创建的所有超参数仅在由parent_name指定的父超参数等于parent_values中传递的某个值时才会被激活。

当条件不满足时,在此作用域下创建超参数将会注册该超参数,但会返回None而不是具体的值。

请注意,无论条件是否满足,此作用域下的任何Python代码都将执行。

这个功能是为了让调参器(Tuner)收集更多关于搜索空间和当前试验的信息。它特别适用于模型选择。如果父超参数是用于模型选择的,那么只有在选择了模型时,该模型中的超参数才应该被激活,这可以通过使用conditional_scope来实现。

def MyHyperModel(HyperModel):def build(self, hp):model = Sequential()model.add(Input(shape=(32, 32, 3)))model_type = hp.Choice("model_type", ["mlp", "cnn"])with hp.conditional_scope("model_type", ["mlp"]):if model_type == "mlp":model.add(Flatten())model.add(Dense(32, activation='relu'))with hp.conditional_scope("model_type", ["cnn"]):if model_type == "cnn":model.add(Conv2D(64, 3, activation='relu'))model.add(GlobalAveragePooling2D())model.add(Dense(10, activation='softmax'))return model

参数

  • parent_name: 一个字符串,指定作为激活当前超参数条件的父超参数的名称。
  • parent_values: 一个列表,包含作为激活当前超参数条件的父超参数的值。

2.8 get 方法

HyperParameters.get(name)

返回此超参数集的当前值。

3、 KerasTuner 中的 Tuner 类

Tuner 基类负责管理超参数搜索过程,包括模型创建、训练和评估。在每个试验(trial)中,Tuner 从 Oracle 实例接收新的超参数值。在调用 model.fit(...) 之后,它将评估结果发送回 Oracle 实例,并从 Oracle 实例中检索下一组要尝试的超参数。

有几个内置的 Tuner 子类可供广泛使用的调优算法使用:RandomSearch(随机搜索)、BayesianOptimization(贝叶斯优化)和 Hyperband。

你还可以通过子类化 Tuner 类来定制你的调优过程。特别是,你可以重写 run_trial 函数以定制模型构建和训练过程。

3.1 基础 Tuner 类

keras_tuner.Tuner(oracle,hypermodel=None,max_model_size=None,optimizer=None,loss=None,metrics=None,distribution_strategy=None,directory=None,project_name=None,logger=None,tuner_id=None,overwrite=False,executions_per_trial=1,**kwargs
)

Keras 模型的 Tuner 类

这是所有针对 Keras 模型调优器的基础 Tuner 类。它负责管理 Keras 模型的构建、训练、评估和保存。新的调优器可以通过继承该类来创建。

所有与 Keras 相关的逻辑都在 Tuner.run_trial() 方法及其子程序中。当子类化 Tuner 时,如果不调用 super().run_trial(),它可以调优任何内容。

参数

oracle:Oracle 类的实例。
hypermodel:HyperModel 类的实例(或一个可调用的函数,该函数接受超参数并返回一个 Model 实例)。当重写 Tuner.run_trial() 方法并且不使用 self.hypermodel 时,它是可选的。
max_model_size:整数,模型参数中最大标量数。大于此值的模型将被拒绝。
optimizer:可选的优化器。它用于覆盖模型编译步骤中的优化器参数。如果 hypermodel 没有编译它生成的模型,则必须指定此参数。
loss: 可选的损失函数。可能用于覆盖模型编译步骤中的损失函数参数。如果 hypermodel 没有编译它生成的模型,则必须指定此参数。

metrics: 可选的评估指标。可能用于覆盖模型编译步骤中的评估指标参数。如果 hypermodel 没有编译它生成的模型,则必须指定此参数。

distribution_strategy: 可选的 tf.distribute.Strategy 实例。如果指定了,每个试验都会在此作用域下运行。例如,tf.distribute.MirroredStrategy(['/gpu:0', '/gpu:1']) 将在两个 GPU 上运行每个试验。目前仅支持单工作节点策略。

directory: 字符串,工作目录的相对路径。

project_name: 字符串,此 Tuner 保存文件时用作前缀的名称。

tuner_id: 可选的字符串,用作此 Tuner 的 ID。

overwrite: 布尔值,默认为 False。如果为 False,则在找到相同名称的现有项目时重新加载它。否则,将覆盖该项目。

executions_per_trial: 整数,每个试验(模型配置)要运行的执行次数(从头开始训练模型,从新的初始化开始)。由于随机初始化,模型指标可能会有很大差异,因此通常最好在每个试验中运行多个执行以评估给定一组超参数值的性能。

**kwargs: 传递给 BaseTuner 的其他参数。

属性

remaining_trials: 剩余试验数,如果未设置 max_trials 则为 None。这在恢复之前停止的搜索时很有用。

3.2 get_best_hyperparameters方法

Tuner.get_best_hyperparameters(num_trials=1)

这个方法返回根据目标函数确定的最佳超参数。

可以使用此方法重新实例化(未经训练的)在搜索过程中找到的最佳模型。

简单来说,当你使用某种超参数调优方法(如随机搜索、网格搜索、贝叶斯优化等)来寻找最优的模型超参数时,这个 best_hyperparameters 方法会返回那组最优的超参数。之后,你可以使用这组超参数来重新构建(但尚未训练)模型,以便进一步训练或评估。

best_hp = tuner.get_best_hyperparameters()[0]
model = tuner.hypermodel.build(best_hp)

参数:

num_trials: 可选参数,指定要返回的 HyperParameters 对象的数量。

返回:

从最优到最差的 HyperParameter 对象列表。

解释:

这个函数或方法可能是用于从调优过程中返回一系列 HyperParameter 对象,这些对象代表了不同模型配置的超参数。参数 num_trials 允许用户指定希望返回的超参数组合的数量。如果没有指定 num_trials,那么可能会返回所有找到的超参数组合。返回的列表会根据某种评估标准(如模型在验证集上的性能)进行排序,最优的超参数组合排在列表的前面。

3.3 get_best_models 方法

Tuner.get_best_models(num_models=1)

该方法返回由调优器目标函数确定的最佳模型(们)。

这些模型加载了与最佳检查点(最佳试验的最佳周期结束时)相对应的权重。

这个方法用于查询搜索过程中训练的模型。为了获得最佳性能,建议使用在搜索过程中找到的最佳超参数,在完整的数据集上重新训练你的模型。你可以使用 tuner.get_best_hyperparameters() 来获取这些最佳超参数。

参数

num_models: 可选参数,指定要返回的最佳模型的数量。默认为 1。

返回值

从最优到最差的训练模型实例列表。

3.4 get_state 方法

Tuner.get_state()

返回这个对象的当前状态。

这个方法在保存对象时被调用。

返回值

一个由可序列化对象组成的字典,作为状态。

在很多框架和库中,对象通常支持一种“状态”的概念,这个状态可以被保存下来,以便稍后恢复对象到某个特定时间点的状态。例如,在机器学习调优过程中,调优器(Tuner)对象可能会维护一些内部状态,如已经尝试过的超参数组合、当前最佳模型等。为了能够在训练过程中断后恢复,或者在分布式计算环境中同步状态,这些状态信息需要被保存下来。

get_state 方法的作用就是返回这个对象的当前状态。这个方法通常返回一个字典,字典中的键是状态的名称,值是相应的状态值。这些值必须是可序列化的,以便可以保存到磁盘或其他存储介质中。

在保存对象时(例如,当调用 save 方法时),get_state 方法会被自动调用,并将返回的字典作为对象的状态进行保存。同样地,在恢复对象时(例如,当调用 load 方法时),也会有一个对应的方法来设置这个状态(通常是 set_state 方法)。

3.5 load_model方法

Tuner.load_model(trial)

从给定的试验(Trial)中加载模型。

对于向 Oracle 报告中间结果的模型,通常 load_model 应该依赖 trial.best_step 来加载最佳报告步骤的模型。

参数

trial:一个 Trial 实例,对应要加载的模型的试验。

在超参数调优过程中,每个试验(Trial)可能包含多个步骤(step),每个步骤可能对应于使用不同超参数设置训练的模型。如果模型在训练过程中向 Oracle 报告了中间结果(例如,在每个 epoch 后报告验证集上的性能),那么 trial.best_step 通常会被设置为产生最佳结果的步骤。

load_model 方法用于从给定的 Trial 实例中加载模型。在大多数情况下,为了获得最佳性能的模型,应该加载在 trial.best_step 对应的步骤中训练的模型。这可以通过在 load_model 方法内部检查 trial.best_step 并加载相应步骤的模型来实现。

3.6 on_epoch_begin 方法

Tuner.on_epoch_begin(trial, model, epoch, logs=None)

在一个训练周期开始时被调用。

参数

trial: 一个 Trial 实例。
model: 一个 Keras 模型。
epoch: 当前周期(epoch)的编号。
logs: 额外的指标(metrics)数据。

在深度学习和机器学习模型的训练过程中,数据通常被分成多个批次(batches)来进行迭代训练,并且整个数据集会被遍历多次,每遍历一次称为一个周期(epoch)。在每个周期开始时,有些调优器(Tuner)或回调函数(Callback)可能会执行一些操作,比如记录日志、调整学习率、检查早期停止条件等。

在这个方法中,trial 参数是一个 Trial 实例,它通常包含了当前正在进行的试验的所有相关信息,如超参数配置、历史指标等。model 参数是一个 Keras 模型实例,它表示当前正在训练的模型。epoch 参数表示当前是第几个周期,而 logs 参数则是一个字典,包含了当前周期的一些额外指标数据,比如训练损失(loss)、验证损失(val_loss)等。

你可以通过重写这个方法,在周期开始时添加自定义的逻辑,比如打印日志、调整学习率等。但是请注意,在修改模型结构或权重之前,最好先了解这个方法的调用上下文,以避免对训练过程产生不利的影响。

3.7 on_batch_begin 方法

Tuner.on_batch_begin(trial, model, batch, logs)

在一个批次开始时被调用。

参数

trial: 一个 Trial 实例。
model: 一个 Keras 模型。
batch: 当前周期内的当前批次编号。
logs: 额外的指标(metrics)数据。

在深度学习和机器学习模型的训练过程中,数据通常被分成多个批次(batches)进行迭代训练。在每个批次开始时,有些调优器(Tuner)或回调函数(Callback)可能会执行一些操作,比如打印日志、执行特定于批次的操作等。

在这个方法中,trial 参数是一个 Trial 实例,它包含了当前正在进行的试验的所有相关信息。model 参数是一个 Keras 模型实例,表示当前正在训练的模型。batch 参数表示当前周期内的当前批次编号,而 logs 参数则是一个字典,包含了当前批次的一些额外指标数据,比如训练损失(loss)等。

你可以通过重写这个方法,在批次开始时添加自定义的逻辑,比如检查某些条件、执行特定于批次的操作等。但是,请注意,在修改模型结构或权重之前,需要谨慎考虑,因为这可能会对训练过程产生不可预测的影响。

3.9 on_batch_end 方法

Tuner.on_batch_end(trial, model, batch, logs=None)

在一个批次结束时被调用。

参数

trial: 一个 Trial 实例。
model: 一个 Keras 模型。
batch: 当前周期内的当前批次编号。
logs: 额外的指标(metrics)数据。

在深度学习和机器学习模型的训练过程中,数据被分割成多个批次(batches)来进行迭代训练。每当一个批次的数据通过模型进行前向传播(forward pass)、计算损失(loss)、反向传播(backward pass)以及更新权重(weight update)后,这个回调方法就会被触发。

trial 参数是一个 Trial 实例,它代表了当前正在进行的调优试验。model 参数是一个 Keras 模型实例,即当前正在被训练的模型。batch 参数表示当前周期(epoch)内的当前批次编号。logs 参数是一个字典,包含了当前批次训练过程中计算出的各种指标数据,如损失(loss)、准确率(accuracy)等。

你可以通过重写这个方法,在每个批次结束时执行一些自定义的操作,比如记录日志、调整学习率、执行早期停止检查等。这对于监控训练过程、调试模型以及实现复杂的训练策略都非常有用。

3.10 on_epoch_end 方法

Tuner.on_epoch_end(trial, model, epoch, logs=None)

在一个周期结束时被调用。

参数

trial: 一个 Trial 实例。
model: 一个 Keras 模型。
epoch: 当前周期(epoch)的编号。
logs: 字典。这个周期内的指标。这应该包括这个周期的目标值。

在深度学习和机器学习模型的训练过程中,一个周期(epoch)是指整个数据集被模型遍历一次。每当一个周期的训练完成后,这个回调方法就会被触发。

trial 参数是一个 Trial 实例,它代表了当前正在进行的调优试验。model 参数是一个 Keras 模型实例,即当前正在被训练的模型。epoch 参数表示当前周期的编号。logs 参数是一个字典,包含了当前周期内模型的各种指标数据,如训练损失(train_loss)、验证损失(val_loss)、准确率(accuracy)等。重要的是,这个字典中应该包含这个周期的目标值(objective value),即用于评估模型性能的主要指标。

你可以通过重写这个方法,在每个周期结束时执行一些自定义的操作,比如打印日志、调整学习率、检查早停条件(early stopping)、保存最佳模型等。这对于监控训练过程、调试模型以及实现复杂的训练策略都非常有用。

3.11 run_trial 方法

Tuner.run_trial(trial, )

评估一组超参数值。

在搜索过程中,该方法会被多次调用以构建和评估具有不同超参数的模型,并返回目标值。

可以使用 self.hypermodel 来构建和训练模型。

def run_trial(self, trial, *args, **kwargs):hp = trial.hyperparametersmodel = self.hypermodel.build(hp)return self.hypermodel.fit(hp, model, *args, **kwargs)

还可以将其用作任何事物的黑盒优化器。

def run_trial(self, trial, *args, **kwargs):hp = trial.hyperparametersx = hp.Float("x", -2.0, 2.0)y = x * x + 2 * x + 1return y

参数

trial: 一个 Trial 实例,它包含了运行这个试验所需的信息。可以通过 trial.hyperparameters 访问超参数。
*args: 由搜索算法传递的位置参数。
**kwargs: 由搜索算法传递的关键字参数。

返回值

一个 History 对象(这是 model.fit() 的返回值),一个字典,一个浮点数,或者这些类型中的一个的列表。

如果返回一个字典,它应该是一个包含要跟踪的指标的字典。字典的键是指标名称,其中应包含目标名称。字典的值是指标值。

如果返回一个浮点数,它应该是目标值。

如果多次评估模型,你可以返回上述任何类型的结果的列表。最终的目标值是列表中结果的平均值。

3.12 results_summary 方法

Tuner.results_summary(num_trials=10)

显示调优结果摘要。

该方法打印搜索结果的摘要,包括每个试验的超参数值和评估结果。

参数:

num_trials: 可选参数,要显示的试验数量。默认为10。

3.13 save_model方法

Tuner.save_model(trial_id, model, step=0)

保存特定试验的模型。

参数

trial_id: 与该模型对应的 Trial 的 ID。
model: 经过训练的模型。
step: 整数,对于向 Oracle 报告中间结果的模型,此保存的文件对应的步骤。例如,对于 Keras 模型,这是已训练的周期数。

3.14 search 方法

Tuner.search(*fit_args, **fit_kwargs)

执行搜索以找到最佳的超参数配置。

参数:

*fit_args: 应该传递给 run_trial 的位置参数,例如训练和验证数据。
**fit_kwargs: 应该传递给 run_trial 的关键字参数,例如训练和验证数据。

3.15 search_space_summary方法

Tuner.search_space_summary(extended=False)

打印搜索空间摘要。

该方法在调用搜索方法之前打印搜索空间中超参数的摘要。

参数:

extended: 可选布尔值,是否显示扩展摘要。默认为 False。

3.16 set_state 方法

Tuner.set_state(state)

设置此对象的当前状态。

该方法在重新加载时被调用。

参数:

state: 一个包含序列化对象的字典,作为要恢复的状态。

这篇关于Keras深度学习框架第三十二讲:KerasTuner API(1)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1014449

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个?

跨平台系列 cross-plateform 跨平台应用程序-01-概览 cross-plateform 跨平台应用程序-02-有哪些主流技术栈? cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个? cross-plateform 跨平台应用程序-04-React Native 介绍 cross-plateform 跨平台应用程序-05-Flutte

线性代数|机器学习-P36在图中找聚类

文章目录 1. 常见图结构2. 谱聚类 感觉后面几节课的内容跨越太大,需要补充太多的知识点,教授讲得内容跨越较大,一般一节课的内容是书本上的一章节内容,所以看视频比较吃力,需要先预习课本内容后才能够很好的理解教授讲解的知识点。 1. 常见图结构 假设我们有如下图结构: Adjacency Matrix:行和列表示的是节点的位置,A[i,j]表示的第 i 个节点和第 j 个