HyperParameters
类keras_tuner.HyperParameters()
用于存放超参数空间和当前值的容器。
可以将 HyperParameters
实例作为参数传递给 HyperModel.build(hp)
来构建模型。
为了防止用户依赖于非活跃的超参数值,只有活跃的超参数才应该在 HyperParameters.values
中有值。
属性
HyperParameter
对象列表。Boolean
方法HyperParameters.Boolean(name, default=False, parent_name=None, parent_values=None)
在 True 和 False 之间选择。
参数
HyperParameter
实例必须是唯一的。HyperParameter
的名称,用作激活当前 HyperParameter
的条件。HyperParameter
的值,用作激活当前 HyperParameter
的条件。返回
超参数的值,如果超参数不活跃,则返回 None。
Choice
方法HyperParameters.Choice(
name, values, ordered=None, default=None, parent_name=None, parent_values=None
)
从预定义的一组可能值中选择一个值。
参数
HyperParameter
实例必须是唯一的。True
。对于任何其他值,必须为 False
。values
中的选项之一,则为 Nonevalues
中的第一个条目。HyperParameter
的名称,用作激活当前 HyperParameter
的条件。HyperParameter
的值,用作激活当前 HyperParameter
的条件。返回
超参数的值,如果超参数不活跃,则返回 None。
Fixed
方法HyperParameters.Fixed(name, value, parent_name=None, parent_values=None)
固定的、不可调优的值。
参数
HyperParameter
实例必须是唯一的。HyperParameter
的名称,用作激活当前 HyperParameter
的条件。HyperParameter
的值,用作激活当前 HyperParameter
的条件。返回
超参数的值,如果超参数不活跃,则返回 None。
Float
方法HyperParameters.Float(
name,
min_value,
max_value,
step=None,
sampling="linear",
default=None,
parent_name=None,
parent_values=None,
)
浮点值超参数。
示例 #1
hp.Float(
"image_rotation_factor",
min_value=0,
max_value=1)
区间 [0, 1] 中的所有值被采样的概率相等。
示例 #2
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]。
示例 #3
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]。
参数
HyperParameter
实例必须是唯一的。sampling="linear"
,这将是两个样本之间的最小增量。如果 sampling="log"
,这将是两个样本之间的最小乘数。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))min_value
。HyperParameter
的名称,用作激活当前 HyperParameter
的条件。HyperParameter
的值,用作激活当前 HyperParameter
的条件。返回
超参数的值,如果超参数不活跃,则返回 None。
Int
方法HyperParameters.Int(
name,
min_value,
max_value,
step=None,
sampling="linear",
default=None,
parent_name=None,
parent_values=None,
)
整数超参数。
请注意,与 Python 的 range
函数不同,max_value
包含在此参数可以取值的可能值中。
示例 #1
hp.Int(
"n_layers",
min_value=6,
max_value=12)
可能的值为 [6, 7, 8, 9, 10, 11, 12]。
示例 #2
hp.Int(
"n_layers",
min_value=6,
max_value=13,
step=3)
step
是样本之间的最小距离。可能的值为 [6, 9, 12]。
示例 #3
hp.Int(
"batch_size",
min_value=2,
max_value=32,
step=2,
sampling="log")
当 sampling="log"
时,样本之间的 step
是相乘的。可能的值为 [2, 4, 8, 16, 32]。
参数
HyperParameter
实例必须是唯一的。sampling="linear"
,这将是两个样本之间的最小增量。如果 sampling="log"
,这将是两个样本之间的最小乘数。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))min_value
。HyperParameter
的名称,用作激活当前 HyperParameter
的条件。HyperParameter
的值,用作激活当前 HyperParameter
的条件。返回
超参数的值,如果超参数不活跃,则返回 None。
conditional_scope
方法HyperParameters.conditional_scope(parent_name, parent_values)
打开一个范围来创建条件超参数。
在此范围下创建的所有 HyperParameter
只有当 parent_name
指定的父 HyperParameter
等于 parent_values
中传递的值之一时才会激活。
当不满足条件时,在此范围下创建 HyperParameter
将注册 HyperParameter
,但将返回 None
而不是具体值。
请注意,此范围下的任何 Python 代码都将执行,无论是否满足条件。
此功能用于让 Tuner
收集关于搜索空间和当前试验的更多信息。它对于模型选择尤其有用。如果父 HyperParameter
用于模型选择,则模型中的 HyperParameter
只有在选择模型时才应该处于活动状态,这可以使用 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
参数
HyperParameter
的名称,用作激活当前 HyperParameter
的条件。HyperParameter
的值,用作激活当前 HyperParameter
的条件。get
方法HyperParameters.get(name)
返回此超参数集的当前值。