class_docstr: Distribution class for the Incremental (Spline) Quantile Function in the
  paper ``Learning Quantile Functions without Quantile Crossing for
  Distribution-free Time Series Forecasting``
  by Park, Robinson, Aubet, Kan, Gasthaus, Wang
  Parameters
  ----------
  spline_knots, spline_heights
      Tensor parametrizing the x-positions (y-positions) of the spline knots
      Shape: (*batch_shape, (num_qk-1), num_pieces)
  qk_x, qk_y
      Tensor containing the increasing x-positions (y-positions) of the
      quantile knots, Shape: (*batch_shape, num_qk)
  beta_l, beta_r
      Tensor containing the non-negative learnable parameter of the
      left (right) tail, Shape: (*batch_shape,)
class_docstr_tok: ["Distribution","class","for","the","Incremental","(","Spline",")","Quantile","Function","in","the","paper","``","Learning","Quantile","Functions","without","Quantile","Crossing","for","Distribution-free","Time","Series","Forecasting","``","by","Park",",","Robinson",",","Aubet",",","Kan",",","Gasthaus",",","Wang","Parameters","--","--","--","--","--","spline_knots",",","spline_heights","Tensor","parametrizing","the","x-positions","(","y-positions",")","of","the","spline","knots","Shape",":","(","*","batch_shape",",","(","num_qk-1",")",",","num_pieces",")","qk_x",",","qk_y","Tensor","containing","the","increasing","x-positions","(","y-positions",")","of","the","quantile","knots",",","Shape",":","(","*","batch_shape",",","num_qk",")","beta_l",",","beta_r","Tensor","containing","the","non-negative","learnable","parameter","of","the","left","(","right",")","tail",",","Shape",":","(","*","batch_shape",",",")"]
docstr: Computes the quantile level alpha_tilde such that
  alpha_tilde
  = q^{-1}(z) if z is in the tail region
  = qk_x_l or qk_x_r if z is in the non-tail region
  Parameters
  ----------
  z
      Observation, shape = (*batch_shape,)
  left_tail
      If True, compute alpha_tilde for the left tail
      Otherwise, compute alpha_tilde for the right tail
  Returns
  -------
  alpha_tilde
      Corresponding quantile level, shape = (*batch_shape,)
docstr_tok: ["Computes","the","quantile","level","alpha_tilde","such","that","alpha_tilde","=","q^","{","-1","}","(","z",")","if","z","is","in","the","tail","region","=","qk_x_l","or","qk_x_r","if","z","is","in","the","non-tail","region","Parameters","--","--","--","--","--","z","Observation",",","shape","=","(","*","batch_shape",",",")","left_tail","If","True",",","compute","alpha_tilde","for","the","left","tail","Otherwise",",","compute","alpha_tilde","for","the","right","tail","Returns","--","--","--","-","alpha_tilde","Corresponding","quantile","level",",","shape","=","(","*","batch_shape",",",")"]
code: def cdf_tail(
      self, z: torch.Tensor, left_tail: bool = True
  ) -> torch.Tensor:
      r"""
      Computes the quantile level alpha_tilde such that
      alpha_tilde
      = q^{-1}(z) if z is in the tail region
      = qk_x_l or qk_x_r if z is in the non-tail region
      Parameters
      ----------
      z
          Observation, shape = (*batch_shape,)
      left_tail
          If True, compute alpha_tilde for the left tail
          Otherwise, compute alpha_tilde for the right tail
      Returns
      -------
      alpha_tilde
          Corresponding quantile level, shape = (*batch_shape,)
      """
  
      if left_tail:
          tail_a, tail_b, qk_x = self.tail_al, self.tail_bl, self.qk_x_l
      else:
          tail_a, tail_b, qk_x = (
              self.tail_ar,
              self.tail_br,
              1 - self.qk_x_r,
          )
  
      log_alpha_tilde = torch.minimum(
          (z - tail_b) / tail_a, torch.log(qk_x)
      )
      alpha_tilde = torch.exp(log_alpha_tilde)
      return alpha_tilde if left_tail else 1 - alpha_tilde
  
imports: from typing import Dict, List, Optional, Tuple
  import torch
  import torch.nn.functional
  from torch.distributions import AffineTransform, TransformedDistribution
  from gluonts.core.component import validated
  from .distribution_output import DistributionOutput
label_desc: Use image node_id 10 for calling the ISQF obj's underlying member method code with example usage: obj.cdf_tail(z, left_tail) and returns: unknown