KMTrainer

class KMTrainer

Bases: Trainer

Methods

__init__

Initializes the trainer for kernel models.

to_poly

Converts a trained kernel model to QUBO model as amplify.Poly.

train

Trains the kernel model using the provided dataset.

Attributes

beta

Returns the weight for 'sigma' in the lower confidence bound (LCB).

gamma

Returns the weight for a linear term in the model.

low_percentile_corrcoefs

Returns the lower percentile correlation coefficients of the last trained model.

model

Returns the trained kernel model.

percentile_cutoffs

Returns the lower percentile cutoffs for the trainer.

reg_param

Returns the regularization parameter for the kernel model.

class GramMatrixHandler

Bases: object

Compute and update the inverse of a Gram matrix sequentially with addition of a new data set.

__init__(kernel_func: Callable, init_x: np.ndarray, reg_param: float) None

Initialize a Gram matrix with the initial training data.

Parameters:
  • kernel_func (Callable) – A kernel function for Gram matrix.

  • init_x (np.ndarray) – Input value vectors in the initial training data.

  • reg_param (float) – A regularization parameter.

update(x: ndarray) None

Update a Gram matrix and related intermediate variables sequentially with addition of a new data set.

Parameters:

x (np.ndarray) – Input value vectors in the training data (with the last element being a newly added input value vector).

__dict__ = mappingproxy({'__module__': 'amplify_bbopt.trainer', '__doc__': 'Compute and update the inverse of a Gram matrix sequentially with addition of a new data set.', '__init__': <function KMTrainer.GramMatrixHandler.__init__>, 'inv_gram_matrix': <property object>, 's': <property object>, 'v': <property object>, 'sum_vx': <property object>, 'update': <function KMTrainer.GramMatrixHandler.update>, '__dict__': <attribute '__dict__' of 'GramMatrixHandler' objects>, '__weakref__': <attribute '__weakref__' of 'GramMatrixHandler' objects>, '__annotations__': {'_scalar': 'float', '_vector': 'np.ndarray', '_sum_vx': 'np.ndarray'}})
__weakref__

list of weak references to the object (if defined)

property inv_gram_matrix: ndarray

The inverse of a Gram matrix.

property s: float

The intermediate output scalar, s.

property sum_vx: ndarray

sum(x * v).

property v: ndarray

The intermediate output vector, v.

class PolyCoefMatrixHandler

Bases: object

Compute and update polynomial coefficient matrices and vectors sequentially with addition of a new data set for the kernel-QA optimization.

__init__(
init_x: np.ndarray,
init_y: np.ndarray,
kernel_func_mu: Callable,
kernel_func_sigma: Callable | None,
reg_param: float,
) None

Initialize coefficient matrices and vectors with the initial training data.

Parameters:
  • init_x (np.ndarray) – A list of the input value vectors in the initial training data.

  • init_y (np.ndarray) – Corresponding output values.

  • kernel_func_mu (Callable) – A kernel function for the mean.

  • kernel_func_sigma (Callable | None) – A kernel function for the sigma. When sigma is not considered throughout the optimization (beta = 0 or min(beta) = 0 in ModelKernel), set None.

  • reg_param (float) – A regularization parameter.

update(x: ndarray, y: ndarray) None

Update polynomial coefficient matrices and vectors sequentially with addition of a new data set.

Parameters:
  • x (np.ndarray) – All input value vectors in the training data (with the last element being a newly added input value vector).

  • y (np.ndarray) – Corresponding output values.

__dict__ = mappingproxy({'__module__': 'amplify_bbopt.trainer', '__doc__': 'Compute and update polynomial coefficient matrices and vectors sequentially with addition of a new data set for the kernel-QA optimization.', '__init__': <function KMTrainer.PolyCoefMatrixHandler.__init__>, 'coef_matrix_mu': <property object>, 'coef_vector_mu': <property object>, 'coef_matrix_lxx': <property object>, 'coef_vector_sigma': <property object>, 'update': <function KMTrainer.PolyCoefMatrixHandler.update>, '__dict__': <attribute '__dict__' of 'PolyCoefMatrixHandler' objects>, '__weakref__': <attribute '__weakref__' of 'PolyCoefMatrixHandler' objects>, '__annotations__': {'_gram_matrix_handler_sigma': 'KMTrainer.GramMatrixHandler | None', '_coef_matrix_lxx': 'np.ndarray | None', '_coef_vector_sigma': 'np.ndarray | None'}})
__weakref__

list of weak references to the object (if defined)

property coef_matrix_lxx: ndarray | None

Returns the coefficient matrix for the sigma of the kernel model.

property coef_matrix_mu: ndarray

Returns the coefficient matrix for the mean of the kernel model.

property coef_vector_mu: ndarray

Returns the coefficient vector for the mean of the kernel model.

property coef_vector_sigma: ndarray | None

Returns the coefficient vector for the sigma of the kernel model.

__init__() None

Initializes the trainer for kernel models.

to_poly(x: amplify.PolyArray[amplify.Dim1]) amplify.Poly

Converts a trained kernel model to QUBO model as amplify.Poly.

Parameters:

x (amplify.PolyArray[amplify.Dim1]) – The variables in amplify.PolyArray.

Raises:
  • ValueError – If the kernel model has not been trained.

  • ValueError – If the input length does not match the number of features.

  • ValueError – If the input shape is not 1-dimensional.

Returns:

The resulting QUBO polynomial.

Return type:

amplify.Poly

train(dataset: Dataset) None

Trains the kernel model using the provided dataset.

Parameters:

dataset (Dataset) – The dataset to train the model.

Raises:
  • ValueError – If the dataset is empty.

  • ValueError – If the number of input values and output values are not the same.

  • ValueError – If the input dataset is not 2D.

__abstractmethods__ = frozenset({})
__dict__ = mappingproxy({'__module__': 'amplify_bbopt.trainer', 'GramMatrixHandler': <class 'amplify_bbopt.trainer.KMTrainer.GramMatrixHandler'>, 'PolyCoefMatrixHandler': <class 'amplify_bbopt.trainer.KMTrainer.PolyCoefMatrixHandler'>, '__init__': <function KMTrainer.__init__>, 'model': <property object>, 'reg_param': <property object>, 'beta': <property object>, 'gamma': <property object>, 'train': <function KMTrainer.train>, 'to_poly': <function KMTrainer.to_poly>, '__doc__': None, '__abstractmethods__': frozenset(), '_abc_impl': <_abc._abc_data object>, '__annotations__': {'_km': 'KernelModel | None', '_reg_param': 'float', '_beta': 'float', '_gamma': 'float', '_matrix_handler': 'KMTrainer.PolyCoefMatrixHandler | None', '_percentile_cutoffs': 'list[int]', '_low_percentile_corrcoefs': 'dict[int, float] | None'}})
__slots__ = ()
__weakref__

list of weak references to the object (if defined)

property beta: float

Returns the weight for ‘sigma’ in the lower confidence bound (LCB).

property gamma: float

Returns the weight for a linear term in the model.

property low_percentile_corrcoefs: dict[int, float] | None

Returns the lower percentile correlation coefficients of the last trained model.

property model: KernelModel | None

Returns the trained kernel model.

property percentile_cutoffs: list[int]

Returns the lower percentile cutoffs for the trainer.

property reg_param: float

Returns the regularization parameter for the kernel model.