예제 #1
0
    1,
    "randomInitTrials":
    10,
    "params": [{
        "parameterName": "x",
        "type": "DOUBLE",
        "minValue": -10,
        "maxValue": 10,
        "scallingType": "LINEAR"
    }]
}

algorithm = "BayesianOptimization"
#algorithm = "RandomSearchAlgorithm"
#algorithm = "TpeAlgorithm"
#algorithm = "SimulateAnnealAlgorithm"
study = client.create_study(name, study_configuration, algorithm=algorithm)
print(study)

for i in range(maxTrials):
    trial = client.get_suggestions(study.id, 1)[0]
    parameter_value_dict = json.loads(trial.parameter_values)
    x = parameter_value_dict['x']
    #metric = -(x * x - 3 * x + 2)
    metric = x * x - 3 * x + 2
    trial = client.complete_trial_with_one_metric(trial, metric)
    print(trial)

best_trial = client.get_best_trial(study.id)
print("Best trial: {}".format(best_trial))
예제 #2
0
def main(train_function):
    client = AdvisorClient()

    # Get or create the study
    study_configuration = {
        "goal":
        "MINIMIZE",
        "randomInitTrials":
        3,
        "maxTrials":
        5,
        "maxParallelTrials":
        1,
        "params": [
            {
                "parameterName": "min_child_weight",
                "type": "INTEGER",
                "minValue": 1,
                "maxValue": 20,
                "feasiblePoints": "",
                "scallingType": "LINEAR"
            },
            {
                "parameterName": "max_depth",
                "type": "INTEGER",
                "minValue": 5,
                "maxValue": 15,
                "feasiblePoints": "",
                "scallingType": "LINEAR"
            },
            {
                "parameterName": "gamma",
                "type": "DOUBLE",
                "minValue": 0.0,
                "maxValue": 10.0,
                "feasiblePoints": "",
                "scallingType": "LINEAR"
            },
            {
                "parameterName": "alpha",
                "type": "DOUBLE",
                "minValue": 0.0,
                "maxValue": 10.0,
                "feasiblePoints": "",
                "scallingType": "LINEAR"
            },
        ]
    }
    study = client.create_study("Study", study_configuration,
                                "BayesianOptimization")
    #study = client.get_study_by_id(21)

    # Get suggested trials
    trials = client.get_suggestions(study.id, 3)

    # Generate parameters
    parameter_value_dicts = []
    for trial in trials:
        parameter_value_dict = json.loads(trial.parameter_values)
        print("The suggested parameters: {}".format(parameter_value_dict))
        parameter_value_dicts.append(parameter_value_dict)

    # Run training
    metrics = []
    for i in range(len(trials)):
        metric = train_function(**parameter_value_dicts[i])
        metrics.append(metric)

    # Complete the trial
    for i in range(len(trials)):
        trial = trials[i]
        client.complete_trial_with_one_metric(trial, metrics[i])
    is_done = client.is_study_done(study.id)
    best_trial = client.get_best_trial(study.id)
    print("The study: {}, best trial: {}".format(study, best_trial))
예제 #3
0
def main(train_function):
    client = AdvisorClient()

    # Get or create the study
    study_configuration = {
        "goal":
        "MINIMIZE",
        "randomInitTrials":
        1,
        "maxTrials":
        5,
        "maxParallelTrials":
        1,
        "params": [
            {
                "parameterName": "gamma",
                "type": "DOUBLE",
                "minValue": 0.001,
                "maxValue": 0.01,
                "feasiblePoints": "",
                "scalingType": "LINEAR"
            },
            {
                "parameterName": "C",
                "type": "DOUBLE",
                "minValue": 0.5,
                "maxValue": 1.0,
                "feasiblePoints": "",
                "scalingType": "LINEAR"
            },
            {
                "parameterName": "kernel",
                "type": "CATEGORICAL",
                "minValue": 0,
                "maxValue": 0,
                "feasiblePoints": "linear, poly, rbf, sigmoid, precomputed",
                "scalingType": "LINEAR"
            },
            {
                "parameterName": "coef0",
                "type": "DOUBLE",
                "minValue": 0.0,
                "maxValue": 0.5,
                "feasiblePoints": "",
                "scalingType": "LINEAR"
            },
        ]
    }
    study = client.create_study("Study", study_configuration,
                                "BayesianOptimization")
    #study = client.get_study_by_id(6)

    num_trials = 20
    for i in range(num_trials):
        # Get suggested trials
        trials = client.get_suggestions(study.name, 3)

        # Generate parameters
        parameter_value_dicts = []
        for trial in trials:
            parameter_value_dict = json.loads(trial.parameter_values)
            print("The suggested parameters: {}".format(parameter_value_dict))
            parameter_value_dicts.append(parameter_value_dict)

        # Run training
        metrics = []
        for i in range(len(trials)):
            metric = train_function(**parameter_value_dicts[i])
            #metric = train_function(parameter_value_dicts[i])
            metrics.append(metric)

        # Complete the trial
        for i in range(len(trials)):
            trial = trials[i]
            client.complete_trial_with_one_metric(trial, metrics[i])
    is_done = client.is_study_done(study.name)
    best_trial = client.get_best_trial(study.name)
    print("The study: {}, best trial: {}".format(study, best_trial))
    print(best_trial.parameter_values)
예제 #4
0
from advisor_client.model import TrialMetric
from advisor_client.client import AdvisorClient

client = AdvisorClient()

# Create Study
name = "Study"
study_configuration = {
    "goal":
    "MAXIMIZE",
    "maxTrials":
    5,
    "maxParallelTrials":
    1,
    "params": [{
        "parameterName": "hidden1",
        "type": "INTEGER",
        "minValue": 40,
        "maxValue": 400,
        "scalingType": "LINEAR"
    }]
}

study = client.create_study(name, study_configuration)
print(study)
print(client.list_studies())

trials = client.get_suggestions(study.id, 3)
print(trials)
print(client.list_trials(study.id))
예제 #5
0
    def run(self):
        client = AdvisorClient()

        self.run_config_dict

        runner = LocalRunner()
        if "runner" in self.run_config_dict:
            if self.run_config_dict["runner"] == "local_runner":
                runner = LocalRunner()
                logging.info("Run with local runner")

        #study = client.create_study("Study", study_configuration, "BayesianOptimization")
        study = client.create_study(self.run_config_dict["name"],
                                    self.run_config_dict["search_space"],
                                    self.run_config_dict["algorithm"])
        #study = client.get_study_by_id(6)

        logging.info("Create study: {}".format(study))

        for i in range(self.run_config_dict["trialNumber"]):

            logging.info(
                "-------------------- Start Trial --------------------")

            # Get suggested trials
            trials = client.get_suggestions(study.id, 1)

            logging.info("Get trial: {}".format(trials[0]))

            #import ipdb;ipdb.set_trace()

            # Generate parameters
            parameter_value_dicts = []
            for trial in trials:
                parameter_value_dict = json.loads(trial.parameter_values)
                logging.info("The suggested parameters: {}".format(
                    parameter_value_dict))
                parameter_value_dicts.append(parameter_value_dict)

            # Run training

            for trial in trials:
                #metric = train_function(**parameter_value_dicts[i])

                # Example: {"gamma": 0.0063987614450157415}
                parameters_dict = json.loads(trials[0].parameter_values)
                parameter_string = ""

                for k, v in parameters_dict.items():
                    parameter_string += " -{}={}".format(k, v)

                command_string = "cd {} && {} {}".format(
                    self.run_config_dict["path"],
                    self.run_config_dict["command"], parameter_string)
                #import ipdb;ipdb.set_trace()
                #exit_code = subprocess.call(command_string, shell=True)
                logging.info("Run the command: {}".format(command_string))

                # Example: '0.0\n'
                # Example: 'Compute y = x * x - 3 * x + 2\nIput x is: 1.0\nOutput is: 0.0\n0.0\n'
                command_output = subprocess.check_output(command_string,
                                                         shell=True)
                # TODO: Log the output in the directory
                #logging.info("Get output of command: {}".format(command_output))

                metric = float(command_output.split("\n")[-2].strip())
                # Complete the trial
                client.complete_trial_with_one_metric(trial, metric)
                logging.info(
                    "Update the trial with metrics: {}".format(metric))

            logging.info(
                "--------------------- End Trial ---------------------")

        is_done = client.is_study_done(study.id)
        best_trial = client.get_best_trial(study.id)
        logging.info("The study: {}, best trial: {}".format(study, best_trial))
예제 #6
0
def main():
    client = AdvisorClient()

    # Create the study
    name = "Study"
    study_configuration = {
        "goal":
        "MINIMIZE",
        "maxTrials":
        5,
        "maxParallelTrials":
        1,
        "params": [{
            "parameterName": "learning_rate",
            "type": "INTEGER",
            "minValue": 0.01,
            "maxValue": 0.1,
            "scallingType": "LINEAR"
        }]
    }
    study = client.create_study(name, study_configuration)

    # Get suggested trials
    trials = client.get_suggestions(study.id, 3)

    # Generate command-line parameters
    commandline_parameters = []
    i = 0
    for trial in trials:
        parameter = "--output_path=output/{}".format(i)
        parameter_value_dict = json.loads(trial.parameter_values)

        # Example: {"learning_rate": 0.05943265431983244}
        for k, v in parameter_value_dict.items():
            parameter += " --{}={}".format(k, v)

        print(parameter)
        commandline_parameters.append(parameter)
        i += 1

    # Run training
    for i in range(3):
        module_args = commandline_parameters[i]
        module_name = "trainer.task"
        # Example: python -m trainer.task --output_path=0 --learning_rate=0.0796523079087
        shell_command = "python -m {} {}".format(module_name, module_args)
        print(shell_command)
        subprocess.call(shell_command, shell=True)

    # Complete the trial
    for i in range(3):
        trial = trials[i]
        logdir = "output/{}".format(i)
        tensorboard_metrics = tensorboard_util.get_hyperparameters_metric(
            logdir)
        client.complete_trial(trial, tensorboard_metrics)

    # Check if study done
    is_done = client.is_study_done(study.id)
    best_trial = client.get_best_trial(study.id)
    print("The study: {}, if it is done: {}, best trial: {}".format(
        study, is_done, best_trial))
예제 #7
0
def main(train_function):
  client = AdvisorClient()

  # Get or create the study
  study_configuration = {
      "goal":
      "MINIMIZE",
      "randomInitTrials":
      1,
      "maxTrials":
      5,
      "maxParallelTrials":
      1,
      "params": [
          {
              "parameterName": "gamma",
              "type": "DOUBLE",
              "minValue": 0.001,
              "maxValue": 0.01,
              "feasiblePoints": "",
              "scallingType": "LINEAR"
          },
          {
              "parameterName": "C",
              "type": "DOUBLE",
              "minValue": 0.5,
              "maxValue": 1.0,
              "feasiblePoints": "",
              "scallingType": "LINEAR"
          },
          {
              "parameterName": "kernel",
              "type": "CATEGORICAL",
              "minValue": 0,
              "maxValue": 0,
              "feasiblePoints": "linear, poly, rbf, sigmoid, precomputed",
              "scallingType": "LINEAR"
          },
          {
              "parameterName": "coef0",
              "type": "DOUBLE",
              "minValue": 0.0,
              "maxValue": 0.5,
              "feasiblePoints": "",
              "scallingType": "LINEAR"
          },
      ]
  }
  study = client.create_study("Study", study_configuration,
                              "BayesianOptimization")
  #study = client.get_study_by_id(6)

  # Get suggested trials
  trials = client.get_suggestions(study.id, 3)

  # Generate parameters
  parameter_value_dicts = []
  for trial in trials:
    parameter_value_dict = json.loads(trial.parameter_values)
    print("The suggested parameters: {}".format(parameter_value_dict))
    parameter_value_dicts.append(parameter_value_dict)

  # Run training
  metrics = []
  for i in range(len(trials)):
    metric = train_function(**parameter_value_dicts[i])
    #metric = train_function(parameter_value_dicts[i])
    metrics.append(metric)

  # Complete the trial
  for i in range(len(trials)):
    trial = trials[i]
    client.complete_trial_with_one_metric(trial, metrics[i])
  is_done = client.is_study_done(study.id)
  best_trial = client.get_best_trial(study.id)
  print("The study: {}, best trial: {}".format(study, best_trial))
예제 #8
0
def main(train_function):
    client = AdvisorClient()

    # Get or create the study
    study_configuration = {
        "goal":
        "MINIMIZE",
        "randomInitTrials":
        1,
        "maxTrials":
        5,
        "maxParallelTrials":
        1,
        "params": [
            {
                "parameterName": "filter_number0",
                "type": "INTEGER",
                "minValue": 16,
                "maxValue": 32,
                "feasiblePoints": "",
                "scalingType": "LINEAR"
            },
            {
                "parameterName": "convolution_kernel_size0",
                "type": "INTEGER",
                "minValue": 3,
                "maxValue": 5,
                "feasiblePoints": "",
                "scalingType": "LINEAR"
            },
            {
                "parameterName": "max_polling_size0",
                "type": "INTEGER",
                "minValue": 2,
                "maxValue": 3,
                "feasiblePoints": "",
                "scalingType": "LINEAR"
            },
            {
                "parameterName": "filter_number1",
                "type": "INTEGER",
                "minValue": 16,
                "maxValue": 32,
                "feasiblePoints": "",
                "scalingType": "LINEAR"
            },
            {
                "parameterName": "convolution_kernel_size1",
                "type": "INTEGER",
                "minValue": 3,
                "maxValue": 5,
                "feasiblePoints": "",
                "scalingType": "LINEAR"
            },
            {
                "parameterName": "max_polling_size1",
                "type": "INTEGER",
                "minValue": 2,
                "maxValue": 3,
                "feasiblePoints": "",
                "scalingType": "LINEAR"
            },
        ]
    }
    #study = client.create_study("Study", study_configuration, "BayesianOptimization")
    study = client.create_study("Study", study_configuration,
                                "RandomSearchAlgorithm")
    #study = client.get_study_by_id(6)

    # Get suggested trials
    trials = client.get_suggestions(study.id, 3)

    #import ipdb;ipdb.set_trace()

    # Generate parameters
    parameter_value_dicts = []
    for trial in trials:
        parameter_value_dict = json.loads(trial.parameter_values)
        print("The suggested parameters: {}".format(parameter_value_dict))
        parameter_value_dicts.append(parameter_value_dict)

    # Run training
    metrics = []
    for i in range(len(trials)):
        metric = train_function(**parameter_value_dicts[i])
        #metric = train_function(parameter_value_dicts[i])
        metrics.append(metric)

        trial = trials[i]
        # Complete the trial
        client.complete_trial_with_one_metric(trial, metrics[i])

    is_done = client.is_study_done(study.id)
    best_trial = client.get_best_trial(study.id)
    print("The study: {}, best trial: {}".format(study, best_trial))
def main():
    client = AdvisorClient()

    model = MyModel()
    model.load_dataset()
    # Get or create the study
    study_configuration = {
        "goal":
        "MINIMIZE",
        "randomInitTrials":
        5,
        "maxTrials":
        50,
        "maxParallelTrials":
        1,
        "params": [
            {
                "parameterName": "max_bin",
                "type": "INTEGER",
                "minValue": 63,
                "maxValue": 511,
                "feasiblePoints": "",
                "scallingType": "LINEAR"
            },
            {
                "parameterName": "feature_fraction",
                "type": "DOUBLE",
                "minValue": 0.7,
                "maxValue": 0.9,
                "feasiblePoints": "",
                "scallingType": "LINEAR"
            },
            {
                "parameterName": "num_leaves",
                "type": "INTEGER",
                "minValue": 63,
                "maxValue": 512,
                "feasiblePoints": "",
                "scallingType": "LINEAR"
            },
            {
                "parameterName": "lambda_l2",
                "type": "DOUBLE",
                "minValue": 0.0,
                "maxValue": 10.0,
                "feasiblePoints": "",
                "scallingType": "LINEAR"
            },
            {
                "parameterName": "lambda_l1",
                "type": "DOUBLE",
                "minValue": 0.0,
                "maxValue": 10.0,
                "feasiblePoints": "",
                "scallingType": "LINEAR"
            },
        ]
    }
    study = client.create_study("lightgbm_search", study_configuration,
                                "BayesianOptimization")
    #study = client.get_study_by_id(21)

    # Get suggested trials

    # trials = client.get_suggestions(study.id, 5)
    # for i in range(5):
    #     trial = trials[i]
    #     parameter_value_dict = json.loads(trial.parameter_values)
    #     logger.info("The suggested parameters: {}".format(parameter_value_dict))
    #     metric = model.train(**parameter_value_dict)
    #     client.complete_trial_with_one_metric(trial, metric)

    for i in range(50):
        # Get suggested trials
        trials = client.get_suggestions(study.id, 1)

        # Generate parameters
        parameter_value_dicts = []
        for trial in trials:
            parameter_value_dict = json.loads(trial.parameter_values)
            logger.info(
                "The suggested parameters: {}".format(parameter_value_dict))
            parameter_value_dicts.append(parameter_value_dict)

        # Run training
        metrics = []
        for i in range(len(trials)):
            metric = model.train(**parameter_value_dicts[i])
            metrics.append(metric)

        # Complete the trial
        for i in range(len(trials)):
            trial = trials[i]
            client.complete_trial_with_one_metric(trial, metrics[i])
        is_done = client.is_study_done(study.id)
        assert is_done
        best_trial = client.get_best_trial(study.id)
        logger.info("The study: {}, best trial: {}".format(study, best_trial))
예제 #10
0
def main(train_function):
  client = AdvisorClient()

  # Get or create the study
  study_configuration = {
      "goal":
      "MINIMIZE",
      "randomInitTrials":
      1,
      "maxTrials":
      5,
      "maxParallelTrials":
      1,
      "params": [{
          "parameterName":
          "operation_name1",
          "type":
          "CATEGORICAL",
          "minValue":
          0,
          "maxValue":
          0,
          "feasiblePoints":
          "Fliplr, Crop, GaussianBlur, ContrastNormalization, AdditiveGaussianNoise, Multiply",
          "scallingType":
          "LINEAR"
      }, {
          "parameterName": "magnitude1",
          "type": "INTEGER",
          "minValue": 1,
          "maxValue": 11,
          "scallingType": "LINEAR"
      }, {
          "parameterName": "probability1",
          "type": "INTEGER",
          "minValue": 1,
          "maxValue": 10,
          "scallingType": "LINEAR"
      }, {
          "parameterName":
          "operation_name2",
          "type":
          "CATEGORICAL",
          "minValue":
          0,
          "maxValue":
          0,
          "feasiblePoints":
          "Fliplr, Crop, GaussianBlur, ContrastNormalization, AdditiveGaussianNoise, Multiply",
          "scallingType":
          "LINEAR"
      }, {
          "parameterName": "magnitude2",
          "type": "INTEGER",
          "minValue": 1,
          "maxValue": 11,
          "scallingType": "LINEAR"
      }, {
          "parameterName": "probability2",
          "type": "INTEGER",
          "minValue": 1,
          "maxValue": 10,
          "scallingType": "LINEAR"
      }, {
          "parameterName":
          "operation_name3",
          "type":
          "CATEGORICAL",
          "minValue":
          0,
          "maxValue":
          0,
          "feasiblePoints":
          "Fliplr, Crop, GaussianBlur, ContrastNormalization, AdditiveGaussianNoise, Multiply",
          "scallingType":
          "LINEAR"
      }, {
          "parameterName": "magnitude3",
          "type": "INTEGER",
          "minValue": 1,
          "maxValue": 11,
          "scallingType": "LINEAR"
      }, {
          "parameterName": "probability3",
          "type": "INTEGER",
          "minValue": 1,
          "maxValue": 10,
          "scallingType": "LINEAR"
      }]
  }
  #study = client.create_study("Study", study_configuration, "BayesianOptimization")
  study = client.create_study("Study", study_configuration,
                              "RandomSearchAlgorithm")
  #study = client.get_study_by_id(6)

  # Get suggested trials
  trials = client.get_suggestions(study.id, 3)

  #import ipdb;ipdb.set_trace()

  # Generate parameters
  parameter_value_dicts = []
  for trial in trials:
    parameter_value_dict = json.loads(trial.parameter_values)
    print("The suggested parameters: {}".format(parameter_value_dict))
    parameter_value_dicts.append(parameter_value_dict)

  # Run training
  metrics = []
  for i in range(len(trials)):
    metric = train_function(**parameter_value_dicts[i])
    #metric = train_function(parameter_value_dicts[i])
    metrics.append(metric)

    trial = trials[i]
    # Complete the trial
    client.complete_trial_with_one_metric(trial, metrics[i])

  is_done = client.is_study_done(study.id)
  best_trial = client.get_best_trial(study.id)
  print("The study: {}, best trial: {}".format(study, best_trial))
예제 #11
0
파일: example.py 프로젝트: divfor/advisor
from advisor_client.model import TrialMetric
from advisor_client.client import AdvisorClient

client = AdvisorClient()

# Create Study
name = "Study"
study_configuration = {
    "goal":
    "MAXIMIZE",
    "maxTrials":
    5,
    "maxParallelTrials":
    1,
    "params": [{
        "parameterName": "hidden1",
        "type": "INTEGER",
        "minValue": 40,
        "maxValue": 400,
        "scallingType": "LINEAR"
    }]
}

study = client.create_study(name, study_configuration)
print(study)
print(client.list_studies())

trials = client.get_suggestions(study.id, 3)
print(trials)
print(client.list_trials(study.id))