22
22
from typing import Callable , Sequence
23
23
24
24
import numpy as np
25
- from vizier import pyvizier
25
+ from vizier import pyvizier as vz
26
26
from vizier ._src .benchmarks .experimenters import experimenter
27
27
from vizier .pyvizier import converters
28
28
@@ -43,7 +43,7 @@ class NumpyExperimenter(experimenter.Experimenter):
43
43
def __init__ (
44
44
self ,
45
45
impl : Callable [[np .ndarray ], float ],
46
- problem_statement : pyvizier .ProblemStatement ,
46
+ problem_statement : vz .ProblemStatement ,
47
47
):
48
48
"""NumpyExperimenter with analytic function impl for one metric.
49
49
@@ -80,7 +80,7 @@ def __init__(
80
80
raise ValueError (f'Non-numeric parameters { parameter } ' )
81
81
82
82
objective_metrics = problem_statement .metric_information .of_type (
83
- pyvizier .MetricType .OBJECTIVE
83
+ vz .MetricType .OBJECTIVE
84
84
)
85
85
self ._metric_name = objective_metrics .item ().name
86
86
@@ -91,24 +91,22 @@ def __init__(
91
91
flip_sign_for_minimization_metrics = False ,
92
92
)
93
93
94
- def problem_statement (self ) -> pyvizier .ProblemStatement :
94
+ def problem_statement (self ) -> vz .ProblemStatement :
95
95
return copy .deepcopy (self ._problem_statement )
96
96
97
- def evaluate (self , suggestions : Sequence [pyvizier .Trial ]):
97
+ def evaluate (self , suggestions : Sequence [vz .Trial ]):
98
98
# Features has shape (num_trials, num_features).
99
99
features = self ._converter .to_features (suggestions )
100
100
for idx , suggestion in enumerate (suggestions ):
101
101
val = self .impl (features [idx ])
102
102
if math .isfinite (val ):
103
- suggestion .complete (
104
- pyvizier .Measurement (metrics = {self ._metric_name : val })
105
- )
103
+ suggestion .complete (vz .Measurement (metrics = {self ._metric_name : val }))
106
104
else :
107
105
self .problem_statement ().search_space .assert_contains (
108
106
suggestions [idx ].parameters
109
107
)
110
108
suggestion .complete (
111
- pyvizier .Measurement (),
109
+ vz .Measurement (),
112
110
infeasibility_reason = 'Objective value is not finite: %f' % val ,
113
111
)
114
112
@@ -126,7 +124,7 @@ class MultiObjectiveNumpyExperimenter(experimenter.Experimenter):
126
124
def __init__ (
127
125
self ,
128
126
impl : Callable [[np .ndarray ], Sequence [float ]],
129
- problem_statement : pyvizier .ProblemStatement ,
127
+ problem_statement : vz .ProblemStatement ,
130
128
):
131
129
self ._impl = impl
132
130
self ._problem_statement = copy .deepcopy (problem_statement )
@@ -136,13 +134,14 @@ def __init__(
136
134
flip_sign_for_minimization_metrics = False ,
137
135
)
138
136
139
- def evaluate (self , suggestions : Sequence [pyvizier .Trial ]) -> None :
137
+ def evaluate (self , suggestions : Sequence [vz .Trial ]) -> None :
138
+ metric_info = self ._problem_statement .metric_information
140
139
features = self ._converter .to_features (suggestions )
141
140
for i , suggestion in enumerate (suggestions ):
142
141
feat = features [i ]
143
142
values = self ._impl (feat )
144
- for mc , value in zip (self . _problem_statement . metric_information , values ):
145
- suggestion .complete (pyvizier .Measurement (metrics = { mc . name : value } ))
143
+ metrics = { mc . name : value for mc , value in zip (metric_info , values )}
144
+ suggestion .complete (vz .Measurement (metrics ))
146
145
147
- def problem_statement (self ) -> pyvizier .ProblemStatement :
146
+ def problem_statement (self ) -> vz .ProblemStatement :
148
147
return copy .deepcopy (self ._problem_statement )
0 commit comments