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: Compute CRPS in analytical form
  Parameters
  ----------
  z
      Observation to evaluate. Shape = (*batch_shape,)
  Returns
  -------
  Tensor
      Tensor containing the CRPS, of the same shape as z
docstr_tok: ["Compute","CRPS","in","analytical","form","Parameters","--","--","--","--","--","z","Observation","to","evaluate",".","Shape","=","(","*","batch_shape",",",")","Returns","--","--","--","-","Tensor","Tensor","containing","the","CRPS",",","of","the","same","shape","as","z"]
code: def crps(self, z: torch.Tensor) -> torch.Tensor:
      r"""
      Compute CRPS in analytical form
      Parameters
      ----------
      z
          Observation to evaluate. Shape = (*batch_shape,)
      Returns
      -------
      Tensor
          Tensor containing the CRPS, of the same shape as z
      """
  
      crps_lt = self.crps_tail(z, left_tail=True)
      crps_rt = self.crps_tail(z, left_tail=False)
  
      return crps_lt + crps_rt + self.crps_spline(z)
  
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 14 for calling the ISQF obj's underlying member method code with example usage: obj.crps(z) and returns: unknown