Spaces:
Sleeping
Sleeping
Commit
·
b4e0cde
1
Parent(s):
64b444d
Add crossover to hyperparam optimization
Browse files- benchmarks/hyperparamopt.py +18 -11
benchmarks/hyperparamopt.py
CHANGED
|
@@ -11,7 +11,7 @@ from hyperopt.fmin import generate_trials_to_calculate
|
|
| 11 |
################################################################################
|
| 12 |
TRIALS_FOLDER = "trials2"
|
| 13 |
NUMBER_TRIALS_PER_RUN = 1
|
| 14 |
-
timeout_in_minutes =
|
| 15 |
|
| 16 |
# Test run to compile everything:
|
| 17 |
binary_operators = ["*", "/", "+", "-"]
|
|
@@ -162,10 +162,12 @@ space = dict(
|
|
| 162 |
weightRandomize=hp.loguniform("weightRandomize", np.log(0.0001), np.log(100)),
|
| 163 |
# weightSimplify=0.002,
|
| 164 |
weightSimplify=hp.choice("weightSimplify", [0.002]), # One of these is fixed.
|
|
|
|
|
|
|
| 165 |
# perturbationFactor=1.0,
|
| 166 |
perturbationFactor=hp.loguniform("perturbationFactor", np.log(0.0001), np.log(100)),
|
| 167 |
# maxsize=20,
|
| 168 |
-
maxsize=hp.choice("maxsize", [
|
| 169 |
# warmupMaxsizeBy=0.0,
|
| 170 |
warmupMaxsizeBy=hp.uniform("warmupMaxsizeBy", 0.0, 0.5),
|
| 171 |
# useFrequency=True,
|
|
@@ -180,6 +182,8 @@ space = dict(
|
|
| 180 |
tournament_selection_p=hp.uniform("tournament_selection_p", 0.0, 1.0),
|
| 181 |
)
|
| 182 |
|
|
|
|
|
|
|
| 183 |
init_vals = [
|
| 184 |
dict(
|
| 185 |
model_selection=0, # 0 means first choice
|
|
@@ -187,15 +191,15 @@ init_vals = [
|
|
| 187 |
unary_operators=0,
|
| 188 |
populations=100.0,
|
| 189 |
niterations=0,
|
| 190 |
-
ncyclesperiteration=
|
| 191 |
-
alpha=0.
|
| 192 |
annealing=0,
|
| 193 |
# fractionReplaced=0.01,
|
| 194 |
fractionReplaced=0.01,
|
| 195 |
# fractionReplacedHof=0.005,
|
| 196 |
fractionReplacedHof=0.005,
|
| 197 |
# npop=100,
|
| 198 |
-
npop=
|
| 199 |
# parsimony=1e-4,
|
| 200 |
parsimony=1e-4,
|
| 201 |
# topn=10,
|
|
@@ -216,6 +220,8 @@ init_vals = [
|
|
| 216 |
weightRandomize=1.0,
|
| 217 |
# weightSimplify=0.002,
|
| 218 |
weightSimplify=0, # One of these is fixed.
|
|
|
|
|
|
|
| 219 |
# perturbationFactor=1.0,
|
| 220 |
perturbationFactor=1.0,
|
| 221 |
# maxsize=20,
|
|
@@ -231,7 +237,7 @@ init_vals = [
|
|
| 231 |
# optimizer_iterations=10,
|
| 232 |
optimizer_iterations=10.0,
|
| 233 |
# tournament_selection_p=1.0,
|
| 234 |
-
tournament_selection_p=0.999,
|
| 235 |
)
|
| 236 |
]
|
| 237 |
|
|
@@ -273,12 +279,9 @@ n_prior_trials = len(list(glob.glob(path)))
|
|
| 273 |
|
| 274 |
loaded_fnames = []
|
| 275 |
trials = generate_trials_to_calculate(init_vals)
|
| 276 |
-
i =
|
| 277 |
n = NUMBER_TRIALS_PER_RUN
|
| 278 |
|
| 279 |
-
if i > 0:
|
| 280 |
-
trials = None
|
| 281 |
-
|
| 282 |
# Run new hyperparameter trials until killed
|
| 283 |
while True:
|
| 284 |
np.random.seed()
|
|
@@ -331,7 +334,11 @@ while True:
|
|
| 331 |
hyperopt_trial = Trials()
|
| 332 |
|
| 333 |
# Merge with empty trials dataset:
|
| 334 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 335 |
new_fname = TRIALS_FOLDER + "/" + str(np.random.randint(0, sys.maxsize)) + ".pkl"
|
| 336 |
pkl.dump({"trials": save_trials, "n": n}, open(new_fname, "wb"))
|
| 337 |
loaded_fnames.append(new_fname)
|
|
|
|
| 11 |
################################################################################
|
| 12 |
TRIALS_FOLDER = "trials2"
|
| 13 |
NUMBER_TRIALS_PER_RUN = 1
|
| 14 |
+
timeout_in_minutes = 10
|
| 15 |
|
| 16 |
# Test run to compile everything:
|
| 17 |
binary_operators = ["*", "/", "+", "-"]
|
|
|
|
| 162 |
weightRandomize=hp.loguniform("weightRandomize", np.log(0.0001), np.log(100)),
|
| 163 |
# weightSimplify=0.002,
|
| 164 |
weightSimplify=hp.choice("weightSimplify", [0.002]), # One of these is fixed.
|
| 165 |
+
# crossoverProbability=0.01,
|
| 166 |
+
crossoverProbability=hp.loguniform("crossoverProbability", np.log(0.00001), np.log(0.2)),
|
| 167 |
# perturbationFactor=1.0,
|
| 168 |
perturbationFactor=hp.loguniform("perturbationFactor", np.log(0.0001), np.log(100)),
|
| 169 |
# maxsize=20,
|
| 170 |
+
maxsize=hp.choice("maxsize", [30]),
|
| 171 |
# warmupMaxsizeBy=0.0,
|
| 172 |
warmupMaxsizeBy=hp.uniform("warmupMaxsizeBy", 0.0, 0.5),
|
| 173 |
# useFrequency=True,
|
|
|
|
| 182 |
tournament_selection_p=hp.uniform("tournament_selection_p", 0.0, 1.0),
|
| 183 |
)
|
| 184 |
|
| 185 |
+
rand_between = lambda lo, hi: (np.random.rand()*(hi - lo) + lo)
|
| 186 |
+
|
| 187 |
init_vals = [
|
| 188 |
dict(
|
| 189 |
model_selection=0, # 0 means first choice
|
|
|
|
| 191 |
unary_operators=0,
|
| 192 |
populations=100.0,
|
| 193 |
niterations=0,
|
| 194 |
+
ncyclesperiteration=rand_between(50, 150),
|
| 195 |
+
alpha=rand_between(0.05, 0.2),
|
| 196 |
annealing=0,
|
| 197 |
# fractionReplaced=0.01,
|
| 198 |
fractionReplaced=0.01,
|
| 199 |
# fractionReplacedHof=0.005,
|
| 200 |
fractionReplacedHof=0.005,
|
| 201 |
# npop=100,
|
| 202 |
+
npop=rand_between(50, 200),
|
| 203 |
# parsimony=1e-4,
|
| 204 |
parsimony=1e-4,
|
| 205 |
# topn=10,
|
|
|
|
| 220 |
weightRandomize=1.0,
|
| 221 |
# weightSimplify=0.002,
|
| 222 |
weightSimplify=0, # One of these is fixed.
|
| 223 |
+
# crossoverProbability=0.01
|
| 224 |
+
crossoverProbability=0.01,
|
| 225 |
# perturbationFactor=1.0,
|
| 226 |
perturbationFactor=1.0,
|
| 227 |
# maxsize=20,
|
|
|
|
| 237 |
# optimizer_iterations=10,
|
| 238 |
optimizer_iterations=10.0,
|
| 239 |
# tournament_selection_p=1.0,
|
| 240 |
+
tournament_selection_p=rand_between(0.9, 0.999),
|
| 241 |
)
|
| 242 |
]
|
| 243 |
|
|
|
|
| 279 |
|
| 280 |
loaded_fnames = []
|
| 281 |
trials = generate_trials_to_calculate(init_vals)
|
| 282 |
+
i = 0
|
| 283 |
n = NUMBER_TRIALS_PER_RUN
|
| 284 |
|
|
|
|
|
|
|
|
|
|
| 285 |
# Run new hyperparameter trials until killed
|
| 286 |
while True:
|
| 287 |
np.random.seed()
|
|
|
|
| 334 |
hyperopt_trial = Trials()
|
| 335 |
|
| 336 |
# Merge with empty trials dataset:
|
| 337 |
+
if i == 0:
|
| 338 |
+
save_trials = merge_trials(hyperopt_trial, trials.trials)
|
| 339 |
+
else:
|
| 340 |
+
save_trials = merge_trials(hyperopt_trial, trials.trials[-n:])
|
| 341 |
+
|
| 342 |
new_fname = TRIALS_FOLDER + "/" + str(np.random.randint(0, sys.maxsize)) + ".pkl"
|
| 343 |
pkl.dump({"trials": save_trials, "n": n}, open(new_fname, "wb"))
|
| 344 |
loaded_fnames.append(new_fname)
|