docstr: Construct an Ornstein-Uhlenbeck Variance Exploding SDE.
  
  Note that the "steady-state mean" `y` is not provided at construction,
  but must rather be given as an argument to the methods
  which require it (e.g., `sde` or `marginal_prob`).
  
  dx = -theta (y-x) dt + sigma(t) dw
  
  with
  
  sigma(t) = sigma_min (sigma_max/sigma_min)^t * sqrt(2 log(sigma_max/sigma_min))
  
  Args:
      theta: stiffness parameter.
      sigma_min: smallest sigma.
      sigma_max: largest sigma.
      N: number of discretization steps
code: def __init__(
      self,
      theta=1.5,
      sigma_min=0.05,
      sigma_max=0.5,
      N=1000,
      **ignored_kwargs,
  ):
      """Construct an Ornstein-Uhlenbeck Variance Exploding SDE.
  
      Note that the "steady-state mean" `y` is not provided at construction,
      but must rather be given as an argument to the methods
      which require it (e.g., `sde` or `marginal_prob`).
  
      dx = -theta (y-x) dt + sigma(t) dw
  
      with
  
      sigma(t) = sigma_min (sigma_max/sigma_min)^t * sqrt(2 log(sigma_max/sigma_min))
  
      Args:
          theta: stiffness parameter.
          sigma_min: smallest sigma.
          sigma_max: largest sigma.
          N: number of discretization steps
      """
      super().__init__(N)
      self.theta = theta
      self.sigma_min = sigma_min
      self.sigma_max = sigma_max
      self.logsig = np.log(self.sigma_max / self.sigma_min)
      self.N = N
  
imports: import abc
  import warnings
  import numpy
  import torch
label_desc: Use image node_id 1 to create a new OUVESDE object from inherited base classes: SDE with example: obj = OUVESDE(theta, sigma_min, sigma_max, N)