我认为最好只创建两个 hparams 选择变量,每个变量用于一层中的单位计数。如果第二层的单位为零,它将完全消失。
neurons_first_layer = hp.Choice('neurons_first_layer', [16,32,64,128])
neurons_second_layer = hp.Choice('neurons_second_layer', [0,16,32,64,])
model.add(tf.keras.layers.Dense(units=neurons_first_layer, activation='relu', use_bias=True))
if neurons_second_layer: # if second layer has units
model.add(tf.keras.layers.Dense(units=neurons_second_layer,activation='relu', use_bias=True))
这样你就得到 16 种组合:
[(16, 0), (16, 16), (16, 32), (16, 64), (32, 0), (32, 16), (32, 32),
(32, 64), (64, 0), (64, 16), (64, 32), (64, 64), (128, 0), (128, 16), ...]