Source code for nubo.acquisition.acquisition_function

import torch
from torch import Tensor
from numpy import ndarray

[docs] class AcquisitionFunction: """ Parent class of all acquisition functions. """ def __init__(self) -> None: pass def __call__(self, x: Tensor | ndarray) -> Tensor | ndarray: """ Wrapper to allow `x` to be a ``torch.Tensor`` or a ``numpy.ndarray`` to enable optimisation with ``torch.optim`` and ``scipy.optimize``. Parameters ---------- x : ``torch.Tensor`` or ``numpy.ndarray`` (size 1 x d) Test point. Returns ------- ``torch.Tensor`` or ``float`` (size 1 or ``float``) Acquisition. """ if isinstance(x, ndarray): x = torch.from_numpy(x).reshape(1, -1) acq = self.eval(x) acq = float(acq) elif isinstance(x, Tensor): acq = self.eval(x) else: raise ValueError("x must be np.ndarray or torch.Tensor") return acq