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: 一个包含序列化对象的字典,作为要恢复的状态。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/844341.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Node性能如何进行监控以及优化?

一、 是什么 Node作为一门服务端语言,性能方面尤为重要,其衡量指标一般有如下: CPU内存I/O网络 CPU 主要分成了两部分: CPU负载:在某个时间段内,占用以及等待CPU的进程总数CPU使用率:CPU时…

【软件设计师】软件工程基础知识

1.软件工程概述 1.1 模型 1.1.1 增量模型 增量模型又称之为渐增模型,也称之为有计划的产品改进模型;可以在增量开发的过程中逐步理解需求。 它从一组给定的需求开始,通过构造一系列可执行中间版本来实施开发活动,在上一版本基础…

ChatGLM2-6B 模型基于 [P-Tuning v2]的微调

ChatGLM2-6B-PT 一、介绍 1、本文实现对于 ChatGLM2-6B 模型基于 [P-Tuning v2](https://github.com/THUDM/P-tuning-v2) 的微调 2、运行至少需要 7GB 显存 3、以 [ADGEN](https://aclanthology.org/D19-1321.pdf) (广告生成) 数据集为例介绍代码的使用方法。 模型部署参考…

TypeScript-函数类型

函数类型 指给函数添加类型注解,本质上就是给函数的参数和返回值添加类型约束 function add(a: number,b: number) :number {return a b } let res: number res add(2 3) // 函数参数注解类型之后,不但限制了参数的类型还限制了参数为必填 优点&…

富格林:借助正规技巧实现出金

富格林悉知,现货黄金近年来的表现相当出众,相信上车交易现货黄金的投资者,或多或少都在市场中分得一块蛋糕。不过也并不代表所有人都可以轻松在现货黄金中获利,尤其是投资新手。如果没有正规的投资经验观念,就很难实现…

基于Udp(收发信息使用同一个socket)网络通信编程

想要实现网络通信那么就要有一个客户端一个服务器 客户端发送数据,服务器接收数据并返回数据 网络通信就是进程通信 所以我们用两个程序来分别编写客户端和服务器 服务器 1,设置端口号, 2、ip可以固定位127.0.0.1来用于本地测试&#xff0c…

二刷算法训练营Day15 | 二叉树(2/9)

目录 详细布置: 1. 层序遍历 2. 226. 翻转二叉树 3. 101. 对称二叉树 详细布置: 1. 层序遍历 昨天练习了几种二叉树的深度优先遍历,包括: ​​​​​​前中后序的递归法前中后序的迭代法前中后序迭代的统一写法 今天&…

HCIP-Datacom-ARST自选题库__OSPF多选【62道题】

1.如图所示,路由器所有的接口开启OSPF,图中标识的IP地址为设备的LoopbackO接口的IP地址,R1、R2、R3的LoopbackO通告在区域1,R4的Loopback0通告在区域0,R5的LoopbackO通告在区域2,下列哪些IP地址之间可以相互…

【机器学习】基于tensorflow实现你的第一个DNN网络

博客导读: 《AI—工程篇》 AI智能体研发之路-工程篇(一):Docker助力AI智能体开发提效 AI智能体研发之路-工程篇(二):Dify智能体开发平台一键部署 AI智能体研发之路-工程篇(三&am…

传统RNN网络及其案例--人名分类

传统的RNN模型简介 RNN 先上图 这图看起来莫名其妙,想拿着跟CNN对比着学第一眼看上去有点摸不着头脑,其实我们可以把每一个时刻的图展开来,如下 其中,为了简化计算,我们默认每一个隐层参数相同,这样看来R…

7. 核心功能(Core Features)

7. 核心功能(Core Features) 本章节深入介绍 Spring Boot 的详细信息。在这里,你可以了解想要使用的和自定义的主要功能。如果您还没有阅读 “Getting Started” 和 “Developing with Spring Boot” 这两节内容,不放先去阅读这两…

添砖Java(十二)——异常,异常捕获,常见异常方法

异常: 定义:异常通俗来讲,其实就是你写出bug来了,编译器给你报错了。 public static void main(String[] args)throws Exception {int z10/0;} 这个代码虽然说是可以运行,但是编译器会报错。 因为10不能去除以0。 异…

【C++】:vector容器的底层模拟实现迭代器失效隐藏的浅拷贝

目录 💡前言一,构造函数1 . 强制编译器生成默认构造2 . 拷贝构造3. 用迭代器区间初始化4. 用n个val值构造5. initializer_list 的构造 二,析构函数三,关于迭代器四,有关数据个数与容量五,交换函数swap六&am…

C# 数组/集合排序

一&#xff1a;基础类型集合排序 /// <summary> /// 排序 /// </summary> /// <param name"isReverse">顺序是否取反</param> public static void Sort<T>(this IList<T> array, bool isReverse false)where T : IComparable …

Instagram运营必备工具合集

Instagram的运营不仅仅涉及数据分析&#xff0c;还包括内容规划、发布管理、互动提升和广告优化等多个方面。以下是一些海外社媒Instagram运营必备的工具&#xff0c;这些工具可以帮助您更有效地管理和提升您的Instagram账号。 Instagram 运营必备工具合集 数据分析工具 1、Ins…

10种排序算法总结-(c语言实现与动画演示)

算法分类 十种常见排序算法可以分为两大类&#xff1a; 比较类排序&#xff1a;通过比较来决定元素间的相对次序&#xff0c;由于其时间复杂度不能突破O(nlogn)&#xff0c;因此也称为非线性时间比较类排序。非比较类排序&#xff1a;不通过比较来决定元素间的相对次序&#…

什么叫USDT(泰达币)的前世今生!

一、引言 在数字货币的世界里&#xff0c;USDT&#xff08;Tether USDT&#xff09;以其独特的稳定机制&#xff0c;成为了连接传统金融市场与加密货币市场的桥梁。本文将带您了解USDT的诞生背景、发展历程、技术特点以及未来展望。 二、USDT的诞生背景 USDT是Tether公司推出…

antd:动态获取菜单

修改 app.tsx 文件 修改 getInitialState 方法 export async function getInitialState(): Promise<{...menuData?: MenuDataItem[] | undefined;fetchMenuList?: Promise<MenuDataItem[] | undefined>; }> {...const fetchMenuList async () > {const men…

【服务器部署篇】Linux下Node.js的安装和配置

作者介绍&#xff1a;本人笔名姑苏老陈&#xff0c;从事JAVA开发工作十多年了&#xff0c;带过刚毕业的实习生&#xff0c;也带过技术团队。最近有个朋友的表弟&#xff0c;马上要大学毕业了&#xff0c;想从事JAVA开发工作&#xff0c;但不知道从何处入手。于是&#xff0c;产…

ChatGPT的工作原理,这篇文章说清楚了!

作者&#xff1a;史蒂芬沃尔弗拉姆&#xff08;Stephen Wolfram&#xff09;英、美籍 计算机科学家&#xff0c; 物理学家。他是 Mathematica 的首席设计师&#xff0c;《一种新科学》一书的作者。 ChatGPT 能够自动生成一些读起来表面上甚至像人写的文字的东西&#xff0c;这…