Я использую пользовательскую функцию для создания испытаний
tune_experiment_config = {
"name": "experiment1",
"run": "SecondStageDNNTune",
"num_samples": 5,
"resources_per_trial": {
"cpu": 4
},
"local_dir": "/tmp/dump/datastore",
"stop": {
"validation_F1_score": 0.99
},
"checkpoint_freq": 5,
"checkpoint_at_end": true,
"config": {
"n_hidden_layers": [1, 9],
"n_hidden_nodes": [2, 256]
}
}
for key, value in some_dict.items():
low, high = value
tune_experiment_config[key] = tune.sample_from(lambda spec:random_powers_of_2(low, high))
def random_powers_of_2(low, high):
low, high = np.log2((low, high))
return 2 ** np.random.randint(int(low), int(high))
configuration = tune.Experiment(**tune_experiment_config)
trials = tune.run_experiments(configuration, verbose=False)
По какой-то причине, если для функции tune.sample_from сделано несколько вызовов, в которых разные ключи принимают случайные значения разных диапазонов, они засоряются. Как это решить? Является ли tune.function решением этой проблемы? Если да, то как его использовать?