def _apply(self, x1, x2, param_expansion_ndims=<NUM_LIT:0>):
raise NotImplementedError(<EOL>'<STR_LIT>')<EOL>
Apply the kernel function to a pair of (batches of) inputs.

        Args:
          x1: `Tensor` input to the first positional parameter of the kernel, of
            shape `[b1, ..., bB, f1, ..., fF]`, where `B` may be zero (no batching)
            and `F` (number of feature dimensions) must equal the kernel's
            `feature_ndims` property. Batch shape must broadcast with the batch
            shape of `x2` and with the kernel's parameters *after* parameter
            expansion (see `param_expansion_ndims` argument).
          x2: `Tensor` input to the second positional parameter of the kernel,
            shape `[c1, ..., cC, f1, ..., fF]`, where `C` may be zero (no batching)
            and `F` (number of feature dimensions) must equal the kernel's
            `feature_ndims` property. Batch shape must broadcast with the batch
            shape of `x1` and with the kernel's parameters *after* parameter
            expansion (see `param_expansion_ndims` argument).
          param_expansion_ndims: Python `integer` enabling reshaping of kernel
            parameters by concatenating a list of 1's to the param shapes. This
            allows the caller to control how the parameters broadcast across the
            inputs.

        Returns:
          `Tensor` containing the (batch of) results of applying the kernel function
          to inputs `x1` and `x2`. If the kernel parameters' batch shape *after*
          parameter expansion (ie, concatenating `param_expansion_ndims` 1's onto
          the parameters' shapes) is `[k1, ..., kK, 1, ..., 1]` then the shape of
          the `Tensor` resulting from this method call is
          `broadcast([b1, ..., bB], [c1, ..., cC], [k1, ..., kK, 1, ..., 1])`.