:py:mod:`did.kernels` ===================== .. py:module:: did.kernels .. autoapi-nested-parse:: kernels.py Implements generic Kernel module as well as Abel and Gaussian kernels. Module Contents --------------- Classes ~~~~~~~ .. autoapisummary:: did.kernels.Kernel Functions ~~~~~~~~~ .. autoapisummary:: did.kernels.sq_dist did.kernels.abel_kernel did.kernels.gaussian_kernel .. py:class:: Kernel(kernel_name, kernel_fn, kernel_params) Bases: :py:obj:`torch.nn.Module` Generic Kernel nn.Module. Implements a `validate_input` static method and forward. .. py:method:: validate_input(x) :staticmethod: Validate input, else add dimension in front. :Parameters: **x** (*torch.Tensor*) -- Input tensor to validate. :returns: Validated input tensor, or unsqueezed at 0 dimension. :rtype: torch.Tensor .. py:method:: forward(self, x, y) .. py:function:: sq_dist(X1, X2) Wrapper for `torch.cdist` with exponent 2. :math:`\Vert X_1 - X_2\Vert^2_2` :Parameters: * **X1** (*torch.Tensor with size (n, d)*) * **X2** (*torch.Tensor with size (m, d)*) :returns: :rtype: torch.Tensor with size (n, m) .. py:function:: abel_kernel(X1, X2, a=1.0) Kernel function for Abel kernel defined as: :math:`k(x, y) = \exp(-a\Vert x - y\Vert_2)`. :Parameters: * **X1** (*torch.Tensor with size (n, d)*) * **X2** (*torch.Tensor with size (m, d)*) * **a** (*float, parameter*) :returns: :rtype: torch.Tensor with size (n, m) .. py:function:: gaussian_kernel(X1, X2, sigma=1.0) Kernel function for Gaussian kernel defined as: :math:`k(x, y) = \exp\left(-\frac{\Vert x - y\Vert_2 ^2}{2 \sigma^2}\right)`. :Parameters: * **X1** (*torch.Tensor with size (n, d)*) * **X2** (*torch.Tensor with size (m, d)*) * **sigma** (*float, bandwidth parameter*) :returns: :rtype: torch.Tensor with size (n, m)