geometric_kernels.utils.product

Utilities for dealing with product spaces and product kernels.

Module Contents

geometric_kernels.utils.product.make_product(xs)[source]

Embed a list of elements of factor spaces into the product space. Assumes that elements are batched along the first dimension.

Parameters:

xs (beartype.typing.List[lab.Numeric]) – List of the batches of elements, each of the shape [N, <axes(space)>], where <axes(space)> is the shape of the elements of the respective space.

Returns:

An [N, D]-shaped array, a batch of product space elements, where D is the sum, over all factor spaces, of prod(<axes(space)>).

Return type:

lab.Numeric

geometric_kernels.utils.product.params_to_params_list(params)[source]

Takes a dictionary of parameters of a product kernel and returns a list of dictionaries of parameters for the factor kernels.

Parameters:

params (beartype.typing.Dict[str, lab.Numeric]) – Parameters of the product kernel.

Return type:

beartype.typing.List[beartype.typing.Dict[str, lab.Numeric]]

geometric_kernels.utils.product.project_product(x, dimension_indices, element_shapes)[source]

Project an element of the product space onto each factor. Assumes that elements are batched along the first dimension.

Parameters:
  • x (lab.Numeric) – An [N, D]-shaped array, a batch of N product space elements.

  • dimension_indices (beartype.typing.List[beartype.typing.List[int]]) – Determines how a product space element x is to be mapped to inputs xi of the factor kernels. xi are assumed to be equal to x[dimension_indices[i]], possibly up to a reshape. Such a reshape might be necessary to accommodate the spaces whose elements are matrices rather than vectors, as determined by element_shapes.

  • element_shapes (beartype.typing.List[beartype.typing.List[int]]) – Shapes of the elements in each factor.

Returns:

A list of the batches of elements xi in factor spaces, each of the shape [N, *element_shapes[i]].

Return type:

beartype.typing.List[lab.Numeric]