Skip to content

Commit 47b8978

Browse files
committed
Change returned Objectives
1 parent 863ad6d commit 47b8978

File tree

2 files changed

+31
-12
lines changed

2 files changed

+31
-12
lines changed

hpobench/benchmarks/mo/cnn_benchmark.py

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -258,9 +258,8 @@ def get_fidelity_space(seed: Union[int, None] = None) -> CS.ConfigurationSpace:
258258
ConfigSpace.ConfigurationSpace
259259
"""
260260
fidelity_space = CS.ConfigurationSpace(seed=seed)
261-
fidelity_space.add_hyperparameters([CS.UniformIntegerHyperparameter(
262-
'budget', lower=1, upper=25, default_value=25, log=False
263-
)
261+
fidelity_space.add_hyperparameters([
262+
CS.UniformIntegerHyperparameter('budget', lower=1, upper=25, default_value=25, log=False)
264263
])
265264
return fidelity_space
266265

@@ -298,6 +297,7 @@ def init_model(self, config: Union[CS.Configuration, Dict]) -> Net:
298297
def __seed_everything(self):
299298
"""Helperfunction: Make the benchmark deterministic by setting the correct seeds"""
300299
seed = self.rng.randint(0, 100000)
300+
logger.debug(f'Generate seed: {seed}')
301301
random.seed(seed)
302302
np.random.seed(seed)
303303
torch.manual_seed(seed)
@@ -361,8 +361,10 @@ def objective_function(self, configuration: Union[CS.Configuration, Dict],
361361
-------
362362
Dict -
363363
function_value : Dict
364-
validation_accuracy: float
365-
model_size: float
364+
negative_accuracy: float
365+
-100 * validation accuracy
366+
log_model_size: float
367+
log10 of the number of parameters
366368
cost : time to train the network
367369
info : Dict
368370
train_accuracy : float,
@@ -433,8 +435,8 @@ def objective_function(self, configuration: Union[CS.Configuration, Dict],
433435

434436
elapsed_time = time.time() - time_in
435437

436-
return {'function_value': {'accuracy': val_accuracy,
437-
'model_size': num_params},
438+
return {'function_value': {'negative_accuracy': -100 * val_accuracy,
439+
'log_model_size': float(np.log10(num_params))},
438440
'cost': float(training_runtime),
439441
'info': {'train_accuracy': train_accuracy,
440442
'training_cost': training_runtime,
@@ -477,8 +479,10 @@ def objective_function_test(self, configuration: Union[CS.Configuration, Dict],
477479
-------
478480
Dict -
479481
function_value : Dict
480-
validation_accuracy: float
481-
model_size: float
482+
negative_accuracy: float
483+
-100 * test accuracy
484+
log_model_size: float
485+
log10 of the number of parameters
482486
cost : time to train the network
483487
info : Dict
484488
train_accuracy : float,
@@ -542,8 +546,8 @@ def objective_function_test(self, configuration: Union[CS.Configuration, Dict],
542546

543547
elapsed_time = time.time() - time_in
544548

545-
return {'function_value': {'accuracy': test_accuracy,
546-
'model_size': num_params},
549+
return {'function_value': {'negative_accuracy': -100 * test_accuracy,
550+
'log_model_size': float(np.log10(num_params))},
547551
'cost': training_runtime,
548552
'info': {'train_accuracy': train_accuracy,
549553
'training_cost': training_runtime,

tests/test_mo_cnn.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,21 @@
44
logging.basicConfig(level=logging.DEBUG)
55

66

7+
def test_mo_cnn_seeding():
8+
from hpobench.benchmarks.mo.cnn_benchmark import FlowerCNNBenchmark
9+
b1 = FlowerCNNBenchmark(rng=0)
10+
b2 = FlowerCNNBenchmark(rng=0)
11+
test_config = {
12+
'batch_norm': True, 'batch_size': 71, 'conv_layer_0': 194, 'conv_layer_1': 152,
13+
'conv_layer_2': 92, 'fc_layer_0': 65, 'fc_layer_1': 19, 'fc_layer_2': 273,
14+
'global_avg_pooling': True, 'kernel_size': 5, 'learning_rate_init': 0.09091283280651452,
15+
'n_conv_layers': 2, 'n_fc_layers': 2
16+
}
17+
result_1 = b1.objective_function(test_config, rng=1, fidelity={'budget': 3})
18+
result_2 = b2.objective_function(test_config, rng=1, fidelity={'budget': 3})
19+
assert result_1 == result_2
20+
21+
722
def test_mo_cnn_benchmark():
823
from hpobench.container.benchmarks.mo.cnn_benchmark import FlowerCNNBenchmark
924

@@ -28,6 +43,6 @@ def test_mo_cnn_benchmark():
2843
result_2 = benchmark.objective_function(test_config, rng=1, fidelity={'budget': 3})
2944

3045
assert result_1['info']['valid_accuracy'] == pytest.approx(0.1029, rel=0.001)
31-
assert result_1['info']['valid_accuracy'] == result_1['function_value']['accuracy']
46+
assert result_1['info']['valid_accuracy'] == pytest.approx(-0.01 * result_1['function_value']['negative_accuracy'], abs=0.001)
3247
assert result_1['info']['train_accuracy'] == pytest.approx(0.1044, rel=0.001)
3348
assert result_1['info']['train_accuracy'] == result_2['info']['train_accuracy']

0 commit comments

Comments
 (0)