class_docstr: Noise schedule for diffusion.
  
  Args:
      beta_t0 (float): Variance of the first diffusion step.
      beta_t1 (float): Variance of the last diffusion step.
      beta_exp (float): Power schedule exponent
      num_steps (int): Number of diffusion step.
      variance (str): choice of the sigma value for the denoising eq. Choices: "beta" or "beta_tilde"
      clip (float): clipping value for the denoising steps
      rescale (float): rescaling value to avoid vanishing signals unused by default (i.e 1)
      repartition (str): shape of the schedule only power schedule is supported
      sample_processor (SampleProcessor): Module that normalize data to match better the gaussian distribution
      noise_scale (float): Scaling factor for the noise
class_docstr_tok: ["Noise","schedule","for","diffusion",".","Args",":","beta_t0","(","float",")",":","Variance","of","the","first","diffusion","step",".","beta_t1","(","float",")",":","Variance","of","the","last","diffusion","step",".","beta_exp","(","float",")",":","Power","schedule","exponent","num_steps","(","int",")",":","Number","of","diffusion","step",".","variance","(","str",")",":","choice","of","the","sigma","value","for","the","denoising","eq",".","Choices",":","``","beta","''","or","``","beta_tilde","''","clip","(","float",")",":","clipping","value","for","the","denoising","steps","rescale","(","float",")",":","rescaling","value","to","avoid","vanishing","signals","unused","by","default","(","i.e","1",")","repartition","(","str",")",":","shape","of","the","schedule","only","power","schedule","is","supported","sample_processor","(","SampleProcessor",")",":","Module","that","normalize","data","to","match","better","the","gaussian","distribution","noise_scale","(","float",")",":","Scaling","factor","for","the","noise"]
code: def __init__(
      self,
      beta_t0: float = 1e-4,
      beta_t1: float = 0.02,
      num_steps: int = 1000,
      variance: str = "beta",
      clip: float = 5.0,
      rescale: float = 1.0,
      device="cuda",
      beta_exp: float = 1,
      repartition: str = "power",
      alpha_sigmoid: dict = {},
      n_bands: tp.Optional[int] = None,
      sample_processor: SampleProcessor = SampleProcessor(),
      noise_scale: float = 1.0,
      **kwargs,
  ):
      self.beta_t0 = beta_t0
      self.beta_t1 = beta_t1
      self.variance = variance
      self.num_steps = num_steps
      self.clip = clip
      self.sample_processor = sample_processor
      self.rescale = rescale
      self.n_bands = n_bands
      self.noise_scale = noise_scale
      assert n_bands is None
      if repartition == "power":
          self.betas = (
              torch.linspace(
                  beta_t0 ** (1 / beta_exp),
                  beta_t1 ** (1 / beta_exp),
                  num_steps,
                  device=device,
                  dtype=torch.float,
              )
              ** beta_exp
          )
      else:
          raise RuntimeError("Not implemented")
      self.rng = random.Random(1234)
  
imports: from collections import namedtuple
  import random
  import typing
  import julius
  import torch
label_desc: Use image node_id 1 to create a new NoiseSchedule object  with example: obj = NoiseSchedule(beta_t0, beta_t1, num_steps, variance, clip, rescale, device, beta_exp, repartition, alpha_sigmoid, n_bands, sample_processor, noise_scale)