MCPcopy
hub / github.com/hyperopt/hyperopt / suggest

Function suggest

hyperopt/atpe.py:1577–1621  ·  view source on GitHub ↗
(new_ids, domain, trials, seed)

Source from the content-addressed store, hash-verified

1575
1576
1577def suggest(new_ids, domain, trials, seed):
1578 optimizer = ATPEOptimizer()
1579
1580 # Convert the PyLL domain back into a descriptive form of hyperparameter space
1581 hyperparameterConfig = Hyperparameter.createHyperparameterConfigForHyperoptDomain(
1582 domain
1583 )
1584
1585 results = optimizer.convertTrialsToResults(hyperparameterConfig, trials)
1586
1587 # If there is a loss value that is negative, then we must increment the values so
1588 # they are all positive. This is because ATPE has been optimized only for positive
1589 # loss value
1590 if len(results) > 0:
1591 minVal = min(
1592 [result["loss"] for result in results if result["loss"] is not None]
1593 )
1594 if minVal < 0:
1595 for result in results:
1596 if result["loss"] is not None:
1597 result["loss"] = result["loss"] - minVal + 0.1
1598
1599 hyperparameters = Hyperparameter(hyperparameterConfig)
1600
1601 rval = []
1602 for new_id in new_ids:
1603 parameters = optimizer.recommendNextParameters(
1604 hyperparameterConfig, results, currentTrials=[]
1605 )
1606 flatParameters = hyperparameters.convertToFlatValues(parameters)
1607
1608 rval_results = [domain.new_result()]
1609 rval_miscs = [
1610 dict(
1611 tid=new_id,
1612 cmd=domain.cmd,
1613 workdir=domain.workdir,
1614 idxs={key: [0] for key in flatParameters},
1615 vals={key: [flatParameters[key]] for key in flatParameters},
1616 )
1617 ]
1618
1619 rval.extend(trials.new_trial_docs([new_id], [None], rval_results, rval_miscs))
1620
1621 return rval

Callers

nothing calls this directly

Calls 8

convertToFlatValuesMethod · 0.95
ATPEOptimizerClass · 0.85
HyperparameterClass · 0.85
new_resultMethod · 0.80
new_trial_docsMethod · 0.80

Tested by

no test coverage detected