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
中包含 None,则默认值为 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)
返回此超参数集合的当前值。