code: def gamma_schedules(
      num_diffusion_timesteps: int,
      gamma_cum_start=0.000009,
      gamma_cum_end=0.99999,
  ):
      """
      Cumulative and non-cumulative gamma schedules.
  
      See section 4.1.
      """
      ctt = (
          np.arange(0, num_diffusion_timesteps)
          / (num_diffusion_timesteps - 1)
          * (gamma_cum_end - gamma_cum_start)
          + gamma_cum_start
      )
      ctt = np.concatenate(([0], ctt))
      one_minus_ctt = 1 - ctt
      one_minus_ct = one_minus_ctt[1:] / one_minus_ctt[:-1]
      ct = 1 - one_minus_ct
      ctt = np.concatenate((ctt[1:], [0]))
      return ct, ctt
  
imports: from dataclasses import dataclass
  from typing import Optional, Tuple, Union
  import numpy
  import torch
  import torch.nn.functional
  from ..configuration_utils import ConfigMixin, register_to_config
  from ..utils import BaseOutput
  from .scheduling_utils import SchedulerMixin
label_desc: Use image node_id 4 for calling a global function with example usage: gamma_schedules(num_diffusion_timesteps, gamma_cum_start, gamma_cum_end) and returns: ct,  ctt