sde (torch.nn.Module): Object with methods `f` and `g` representing the drift and diffusion. The output of `g` should be a single tensor of size (batch_size, d) for diagonal noise SDEs or (batch_size, d, m) for SDEs of other noise types; d is the dimensionality of state and m is the dimensionality of Brownian motion. y0 (Tensor): A tensor for the initial state. ts (Tensor or sequence of float): Query times in non-descending order. The state at the first time of `ts` should be `y0`. bm (Brownian, optional): A 'BrownianInterval', `BrownianPath` or `BrownianTree` object. Should return tensors of size (batch_size, m) for `__call__`. Defaults to `BrownianInterval`. method (str, optional): Numerical integration method to use. Must be compatible with the SDE type (Ito/Stratonovich) and the noise type (scalar/additive/diagonal/general). Defaults to a sensible choice depending on the SDE type and noise type of the supplied SDE. adjoint_method (str, optional): Name of numerical integration method for backward adjoint solve. Defaults to a sensible choice depending on the SDE type and noise type of the supplied SDE. dt (float, optional): The constant step size or initial step size for adaptive time-stepping. adaptive (bool, optional): If `True`, use adaptive time-stepping. adjoint_adaptive (bool, optional): If `True`, use adaptive time-stepping for the backward adjoint solve. rtol (float, optional): Relative tolerance. adjoint_rtol (float, optional): Relative tolerance for backward adjoint solve. atol (float, optional): Absolute tolerance. adjoint_atol (float, optional): Absolute tolerance for backward adjoint solve. dt_min (float, optional): Minimum step size during integration. options (dict, optional): Dict of options for the integration method. adjoint_options (dict, optional): Dict of options for the integration method of the backward adjoint solve. adjoint_params (Sequence of Tensors, optional): Tensors whose gradient should be obtained with the adjoint. If not specified, defaults to the parameters of `sde`. names (dict, optional): Dict of method names for drift and diffusion. Expected keys are "drift" and "diffusion". Serves so that users can use methods with names not in `("f", "g")`, e.g. to use the method "foo" for the drift, we supply `names={"drift": "foo"}`. logqp (bool, optional): If `True`, also return the log-ratio penalty. extra (bool, optional): If `True`, also return the extra hidden state used internally in the solver. extra_solver_state: (tuple of Tensors, optional): Additional state to initialise the solver with. Some solvers keep track of additional state besides y0, and this offers a way to optionally initialise that state. Returns: A single state tensor of size (T, batch_size, d). if logqp is True, then the log-ratio penalty is also returned. If extra is True, the any extra internal state of the solver is also returned. Raises: ValueError: An error occurred due to unrecognized noise type/method, or `sde` is missing required methods. Note: The backward pass is much more efficient with Stratonovich SDEs than with Ito SDEs. Note: Double-backward is supported for Stratonovich SDEs. Doing so will use the adjoint method to compute the gradient of the adjoint. (i.e. rather than backpropagating through the numerical solver used for the adjoint.) The same `adjoint_method`, `adjoint_adaptive`, `adjoint_rtol, `adjoint_atol`, `adjoint_options` will be used for the second-order adjoint as is used for the first-order adjoin