class_docstr: Linear Elliptical Slice Sampler.
  
  Ideas:
  - Add batch support, broadcasting over parallel chains.
  - Optimize computations if possible, potentially with torch.compile.
  - Extend fixed features constraint to general linear equality constraints.
class_docstr_tok: ["Linear","Elliptical","Slice","Sampler",".","Ideas",":","-","Add","batch","support",",","broadcasting","over","parallel","chains",".","-","Optimize","computations","if","possible",",","potentially","with","torch.compile",".","-","Extend","fixed","features","constraint","to","general","linear","equality","constraints","."]
docstr: Draw samples.
  
  Args:
      n: The number of samples.
  
  Returns:
      A `n x d`-dim tensor of `n` samples.
docstr_tok: ["Draw","samples",".","Args",":","n",":","The","number","of","samples",".","Returns",":","A","`","n","x","d","`","-dim","tensor","of","`","n","`","samples","."]
code: def draw(self, n: int = 1) -> Tuple[Tensor, Tensor]:
      r"""Draw samples.
  
      Args:
          n: The number of samples.
  
      Returns:
          A `n x d`-dim tensor of `n` samples.
      """
      samples = []
      for _ in range(n):
          for _ in range(self.thinning):
              self.step()
          samples.append(self.step())
      return torch.cat(samples, dim=-1).transpose(-1, -2)
  
imports: from __future__ import annotations
  import math
  from typing import List, Optional, Tuple, Union
  import torch
  from botorch.utils.sampling import PolytopeSampler
  from torch import Tensor
label_desc: Use image node_id 5 for calling the LinearEllipticalSliceSampler obj's underlying member method code with example usage: obj.draw(n) and returns: torch