code: def _to_orig_params(slopes, knot_spacings):
      # b: the difference between slopes of consecutive pieces
      b = slopes[..., 1:] - slopes[..., 0:-1]
  
      # Add slope of first piece to b: b_0 = m_0
      m_0 = slopes[..., 0:1]
      b = torch.cat((m_0, b), dim=-1)
  
      # The actual position of the knots is obtained by cumulative sum of
      # the knot spacings. The first knot position is always 0 for quantile
      # functions.
      knot_positions = (
          torch.cumsum(knot_spacings, dim=-1) - knot_spacings
      )
  
      return b, knot_positions
  
file_path: gluonts/src/gluonts/nursery/robust-mts-attack/pts/distributions/piecewise_linear.py
imports: import torch
  import torch.nn.functional
  from torch.distributions import constraints, NegativeBinomial, Poisson, Distribution, TransformedDistribution, AffineTransform
  from torch.distributions.utils import broadcast_all, lazy_property
  from .utils import broadcast_shape
label_desc: Use image node_id 2 for calling the PiecewiseLinear obj's underlying member method code with example usage: obj._to_orig_params(slopes, knot_spacings) and returns: b,  knot_positions