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: Function to parametrize the x or y positions
  of the num_qk quantile knots
  
  Parameters
  ----------
  quantile_knots
      x or y positions of the quantile knots
      shape: (*batch_shape, num_qk)
  Returns
  -------
  qk
      x or y positions of the quantile knots (qk),
      with index=1, ..., num_qk-1,
      shape: (*batch_shape, num_qk-1)
  qk_plus
      x or y positions of the quantile knots (qk),
      with index=2, ..., num_qk,
      shape: (*batch_shape, num_qk-1)
  qk_l
      x or y positions of the left-most quantile knot (qk),
      shape: (*batch_shape)
  qk_r
      x or y positions of the right-most quantile knot (qk),
      shape: (*batch_shape)
code: def parametrize_qk(
      F, quantile_knots: Tensor
  ) -> Tuple[Tensor, Tensor, Tensor, Tensor]:
      r"""
      Function to parametrize the x or y positions
      of the num_qk quantile knots
  
      Parameters
      ----------
      quantile_knots
          x or y positions of the quantile knots
          shape: (*batch_shape, num_qk)
      Returns
      -------
      qk
          x or y positions of the quantile knots (qk),
          with index=1, ..., num_qk-1,
          shape: (*batch_shape, num_qk-1)
      qk_plus
          x or y positions of the quantile knots (qk),
          with index=2, ..., num_qk,
          shape: (*batch_shape, num_qk-1)
      qk_l
          x or y positions of the left-most quantile knot (qk),
          shape: (*batch_shape)
      qk_r
          x or y positions of the right-most quantile knot (qk),
          shape: (*batch_shape)
      """
  
      qk = F.slice_axis(quantile_knots, axis=-1, begin=0, end=-1)
      qk_plus = F.slice_axis(quantile_knots, axis=-1, begin=1, end=None)
      qk_l = F.slice_axis(
          quantile_knots, axis=-1, begin=0, end=1
      ).squeeze(axis=-1)
      qk_r = F.slice_axis(
          quantile_knots, axis=-1, begin=-1, end=None
      ).squeeze(axis=-1)
  
      return qk, qk_plus, qk_l, qk_r
  
imports: from typing import Dict, List, Optional, Tuple
  import numpy
  from gluonts.core.component import validated
  from gluonts.mx import Tensor
  from gluonts.mx.util import cumsum
  from .bijection import AffineTransformation, Bijection
  from .distribution import Distribution, getF
  from .distribution_output import DistributionOutput
  from .transformed_distribution import TransformedDistribution
label_desc: Use image node_id 4 for calling the ISQF obj's underlying member method code with example usage: obj.parametrize_qk(F, quantile_knots) and returns: qk,  qk_plus,  qk_l,  qk_r