def second_pass(config, best_agent_config):
config = copy.deepcopy(config)
config.update(best_agent_config)
config['result_dir_prefix'] = config['result_dir_prefix'] + '/second-pass'
config['max_iter'] = 5 if config['debug'] else 500
futures = []
with concurrent.futures.ProcessPoolExecutor(min(multiprocessing.cpu_count(), config['nb_process'])) as executor:
if config['debug']:
lrs = [1e-4, 1e-2, 1]
else:
lrs = [1e-4, 2e-4, 3e-4, 4e-4, 5e-4, 6e-4, 7e-4, 8e-4, 9e-4, 1e-3, 2e-3, 3e-3, 4e-3, 5e-3, 6e-3, 7e-3, 8e-3, 9e-3, 1e-2, 2e-2, 3e-2, 4e-2, 5e-2, 6e-2, 7e-2, 8e-2, 9e-2, 1e-1, 2e-1, 3e-1, 4e-1, 5e-1, 6e-1, 7e-1, 8e-1, 9e-1, 1]
for lr in lrs:
config['lr'] = lr
futures.append(executor.submit(exec_second_pass, copy.deepcopy(config)))
concurrent.futures.wait(futures)
results = []
for future in futures:
results.append(future.result())
return {
'best_agent_config': best_agent_config
, 'results': sorted(results, key=lambda result: result['mean_score'], reverse=True)
}
评论列表
文章目录