def search_space(self): return { "model": "MTNet", "lr": 0.001, "batch_size": 16, "epochs": 1, "cnn_dropout": 0.2, "rnn_dropout": 0.2, "time_step": hp.choice([3, 4]), "cnn_height": 2, "long_num": hp.choice([3, 4]), "ar_size": hp.choice([2, 3]), "past_seq_len": hp.sample_from(lambda spec: (spec.config.long_num + 1) * spec.config.time_step), }
def search_space(self, all_available_features): return { "selected_features": hp.sample_from(lambda spec: json.dumps( list( np.random.choice(all_available_features, size=np.random.randint( low=3, high=len(all_available_features)), replace=False)))), "model": "MTNet", "lr": self.lr, "batch_size": self.batch_size, "epochs": self.epochs, "cnn_dropout": self.cnn_dropout, "rnn_dropout": self.rnn_dropout, "time_step": self.time_step, "long_num": self.long_num, "ar_size": self.ar_size, "past_seq_len": self.past_seq_len, "cnn_hid_size": self.cnn_hid_size, "cnn_height": self.cnn_height }
def search_space(self, all_available_features): return { # -------- feature related parameters "selected_features": hp.sample_from(lambda spec: json.dumps( list( np.random.choice(all_available_features, size=np.random.randint( low=3, high=len(all_available_features) + 1), replace=False)))), "model": "Seq2Seq", "latent_dim": self.latent_dim, "dropout": self.dropout_config, # ----------- optimization parameters "lr": self.lr, "batch_size": self.batch_size, "epochs": self.epochs, "past_seq_len": self.past_seq_config, }
def search_space(self, all_available_features): return { # -------- feature related parameters "selected_features": hp.sample_from(lambda spec: json.dumps( list( np.random.choice(all_available_features, size=np.random.randint( low=3, high=len(all_available_features) + 1), replace=False)))), "model": "LSTM", # --------- Vanilla LSTM model parameters "lstm_1_units": self.lstm_1_units_config, "dropout_1": 0.2, "lstm_2_units": self.lstm_2_units_config, "dropout_2": self.dropout_2_config, # ----------- optimization parameters "lr": self.lr, "batch_size": self.batch_size, "epochs": self.epochs, "past_seq_len": self.past_seq_config, }
def _prepare_tune_config(self, space): tune_config = {} for k, v in space.items(): if isinstance(v, RandomSample): tune_config[k] = hp.sample_from(v.func) elif isinstance(v, GridSearch): tune_config[k] = hp.grid_search(v.values) else: tune_config[k] = v return tune_config
def __init__(self, num_rand_samples=1, epochs=5, training_iteration=10, time_step=[3, 4], long_num=[3, 4], cnn_height=[2, 3], cnn_hid_size=[32, 50, 100], ar_size=[2, 3], batch_size=[32, 64]): """ __init__() Constructor. :param num_rand_samples: number of hyper-param configurations sampled randomly :param training_iteration: no. of iterations for training (n epochs) in trials :param epochs: no. of epochs to train in each iteration :param time_step: random search candidates for model param "time_step" :param long_num: random search candidates for model param "long_num" :param ar_size: random search candidates for model param "ar_size" :param batch_size: grid search candidates for batch size :param cnn_height: random search candidates for model param "cnn_height" :param cnn_hid_size: random search candidates for model param "cnn_hid_size" """ super(self.__class__, self).__init__() # -- run time params self.num_samples = num_rand_samples self.training_iteration = training_iteration # -- optimization params self.lr = hp.uniform(0.001, 0.01) self.batch_size = hp.grid_search(batch_size) self.epochs = epochs # ---- model params self.cnn_dropout = hp.uniform(0.2, 0.5) self.rnn_dropout = hp.uniform(0.2, 0.5) self.time_step = hp.choice(time_step) self.long_num = hp.choice(long_num, ) self.cnn_height = hp.choice(cnn_height) self.cnn_hid_size = hp.choice(cnn_hid_size) self.ar_size = hp.choice(ar_size) self.past_seq_len = hp.sample_from( lambda spec: (spec.config.long_num + 1) * spec.config.time_step)
def search_space(self, all_available_features): return { # -------- feature related parameters "selected_features": hp.sample_from(lambda spec: json.dumps( list( np.random.choice(all_available_features, size=np.random.randint( low=3, high=len(all_available_features)), replace=False)))), # -------- model selection TODO add MTNet "model": hp.choice(["LSTM", "Seq2seq"]), # --------- Vanilla LSTM model parameters "lstm_1_units": hp.grid_search([16, 32]), "dropout_1": 0.2, "lstm_2_units": hp.grid_search([16, 32]), "dropout_2": hp.uniform(0.2, 0.5), # ----------- Seq2Seq model parameters "latent_dim": hp.grid_search([32, 64]), "dropout": hp.uniform(0.2, 0.5), # ----------- optimization parameters "lr": hp.uniform(0.001, 0.01), "batch_size": hp.choice([32, 64]), "epochs": self.epochs, "past_seq_len": self.past_seq_config, }
def test_data_creator(self): train_data_creator, val_data_creator = get_data_creators() auto_xgb_reg = AutoXGBRegressor(cpus_per_trial=2, name="auto_xgb_regressor", tree_method='hist') model_search_space = get_xgb_search_space() # todo: change to hp.choice_n search_space = { "features": hp.sample_from( lambda spec: np.random.choice(["f1", "f2", "f3"], size=2)) } search_space.update(model_search_space) auto_xgb_reg.fit(data=train_data_creator, epochs=1, validation_data=val_data_creator, metric="logloss", metric_mode="min", search_space=search_space, n_sampling=2) best_config = auto_xgb_reg.get_best_config() assert all(k in best_config.keys() for k in search_space.keys()) assert len(best_config["features"]) == 2