(
self, hyperparameterSpace, results, currentTrials, lockedValues=None
)
| 696 | self.atpeParamDetails = None |
| 697 | |
| 698 | def recommendNextParameters( |
| 699 | self, hyperparameterSpace, results, currentTrials, lockedValues=None |
| 700 | ): |
| 701 | rstate = numpy.random.default_rng(seed=int(random.randint(1, 2 ** 32 - 1))) |
| 702 | |
| 703 | params = {"param": {}} |
| 704 | |
| 705 | def sample(parameters): |
| 706 | params["param"] = parameters |
| 707 | return {"loss": 0.5, "status": "ok"} |
| 708 | |
| 709 | parameters = Hyperparameter(hyperparameterSpace).getFlatParameters() |
| 710 | |
| 711 | if lockedValues is not None: |
| 712 | # Remove any locked values from ones the optimizer will examine |
| 713 | parameters = list( |
| 714 | filter(lambda param: param.name not in lockedValues.keys(), parameters) |
| 715 | ) |
| 716 | |
| 717 | log10_cardinality = Hyperparameter(hyperparameterSpace).getLog10Cardinality() |
| 718 | initializationRounds = max(10, int(log10_cardinality)) |
| 719 | |
| 720 | atpeParams = {} |
| 721 | atpeParamDetails = {} |
| 722 | if ( |
| 723 | len(list(result for result in results if result["loss"])) |
| 724 | < initializationRounds |
| 725 | ): |
| 726 | atpeParams = { |
| 727 | "gamma": 1.0, |
| 728 | "nEICandidates": 24, |
| 729 | "resultFilteringAgeMultiplier": None, |
| 730 | "resultFilteringLossRankMultiplier": None, |
| 731 | "resultFilteringMode": "none", |
| 732 | "resultFilteringRandomProbability": None, |
| 733 | "secondaryCorrelationExponent": 1.0, |
| 734 | "secondaryCorrelationMultiplier": None, |
| 735 | "secondaryCutoff": 0, |
| 736 | "secondarySorting": 0, |
| 737 | "secondaryFixedProbability": 0.5, |
| 738 | "secondaryLockingMode": "top", |
| 739 | "secondaryProbabilityMode": "fixed", |
| 740 | "secondaryTopLockingPercentile": 0, |
| 741 | } |
| 742 | else: |
| 743 | # Calculate the statistics for the distribution |
| 744 | stats = self.computeAllResultStatistics(hyperparameterSpace, results) |
| 745 | stats["num_parameters"] = len(parameters) |
| 746 | stats["log10_cardinality"] = Hyperparameter( |
| 747 | hyperparameterSpace |
| 748 | ).getLog10Cardinality() |
| 749 | stats["log10_trial"] = math.log10(len(results)) |
| 750 | baseVector = [] |
| 751 | |
| 752 | for feature in self.atpeModelFeatureKeys: |
| 753 | scalingModel = self.featureScalingModels[feature] |
| 754 | transformed = scalingModel.transform([[stats[feature]]])[0][0] |
| 755 | baseVector.append(transformed) |
no test coverage detected