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)
回傳此超參數集的當前值。