class_docstr: API for solvers with possibly adaptive time stepping.
code: def __init__(
      self,
      sde: BaseSDE,
      bm: BaseBrownian,
      dt: Scalar,
      adaptive: bool,
      rtol: Scalar,
      atol: Scalar,
      dt_min: Scalar,
      options: Dict,
      **kwargs,
  ):
      super(BaseSDESolver, self).__init__(**kwargs)
      if sde.sde_type != self.sde_type:
          raise ValueError(
              f"SDE is of type {sde.sde_type} but solver is for type {self.sde_type}"
          )
      if sde.noise_type not in self.noise_types:
          raise ValueError(
              f"SDE has noise type {sde.noise_type} but solver only supports noise types "
              f"{self.noise_types}"
          )
      if (
          bm.levy_area_approximation
          not in self.levy_area_approximations
      ):
          raise ValueError(
              f"SDE solver requires one of {self.levy_area_approximations} set as the "
              f"`levy_area_approximation` on the Brownian motion."
          )
      if (
          sde.noise_type == NOISE_TYPES.scalar
          and torch.Size(bm.shape[1:]).numel() != 1
      ):  # noqa
          raise ValueError(
              "The Brownian motion for scalar SDEs must of dimension 1."
          )
  
      self.sde = sde
      self.bm = bm
      self.dt = dt
      self.adaptive = adaptive
      self.rtol = rtol
      self.atol = atol
      self.dt_min = dt_min
      self.options = options
  
file_path: torchsde/torchsde/_core/base_solver.py
imports: import abc
  import warnings
  import torch
  from .None import adaptive_stepping
  from .None import better_abc
  from .None import interp
  from .base_sde import BaseSDE
  from .._brownian import BaseBrownian
  from ..settings import NOISE_TYPES
  from ..types import Scalar, Tensor, Dict, Tensors, Tuple
label_desc: Use image node_id 1 to create a new BaseSDESolver object  with example: obj = BaseSDESolver(sde, bm, dt, adaptive, rtol, atol, dt_min, options)