class_docstr: GPyTorch Exponential Decay Kernel.
  
  Computes a covariance matrix based on the exponential decay kernel
  between inputs `x_1` and `x_2` (we expect `d = 1`):
  
      K(x_1, x_2) = w + beta^alpha / (x_1 + x_2 + beta)^alpha.
  
  where `w` is an offset parameter, `beta` is a lenthscale parameter, and
  `alpha` is a power parameter.
class_docstr_tok: ["GPyTorch","Exponential","Decay","Kernel",".","Computes","a","covariance","matrix","based","on","the","exponential","decay","kernel","between","inputs","`","x_1","`","and","`","x_2","`","(","we","expect","`","d","=","1","`",")",":","K","(","x_1",",","x_2",")","=","w","+","beta^alpha","\/","(","x_1","+","x_2","+","beta",")","^alpha",".","where","`","w","`","is","an","offset","parameter",",","`","beta","`","is","a","lenthscale","parameter",",","and","`","alpha","`","is","a","power","parameter","."]
code: def forward(self, x1: Tensor, x2: Tensor, **params) -> Tensor:
      offset = self.offset
      power = self.power
      if not params.get("diag", False):
          offset = offset.unsqueeze(
              -1
          )  # unsqueeze enables batch evaluation
          power = power.unsqueeze(
              -1
          )  # unsqueeze enables batch evaluation
      x1_ = x1.div(self.lengthscale)
      x2_ = x2.div(self.lengthscale)
      diff = self.covar_dist(x1_, -x2_, **params)
      res = offset + (diff + 1).pow(-power)
      return res
  
file_path: botorch/botorch/models/kernels/exponential_decay.py
imports: from __future__ import annotations
  from typing import Optional
  import torch
  from gpytorch.constraints import Interval, Positive
  from gpytorch.kernels import Kernel
  from gpytorch.priors import Prior
  from torch import Tensor
label_desc: Use image node_id 8 for calling the ExponentialDecayKernel obj's underlying member method code with example usage: obj.forward(x1, x2) and returns: res