code: def segment_softmax(seglen, value):
      """Performa softmax on each segment.
  
      The first argument ``seglen`` stores the length of each segment. Its
      summation must be equal to the first dimension of the ``value`` tensor.
      Zero-length segments are allowed.
  
      Parameters
      ----------
      seglen : Tensor
          Segment lengths.
      value : Tensor
          Value to aggregate.
  
      Returns
      -------
      Tensor
          Result tensor of the same shape as the ``value`` tensor.
  
      Examples
      --------
  
      >>> import dgl
      >>> import torch as th
      >>> val = th.ones(10, 3)
      >>> seg = th.tensor([1, 0, 5, 4])  # 4 segments
      >>> dgl.segment_softmax(seg, val)
      tensor([[1.0000, 1.0000, 1.0000],
              [0.2000, 0.2000, 0.2000],
              [0.2000, 0.2000, 0.2000],
              [0.2000, 0.2000, 0.2000],
              [0.2000, 0.2000, 0.2000],
              [0.2000, 0.2000, 0.2000],
              [0.2500, 0.2500, 0.2500],
              [0.2500, 0.2500, 0.2500],
              [0.2500, 0.2500, 0.2500],
              [0.2500, 0.2500, 0.2500]])
      """
      value_max = segment_reduce(seglen, value, reducer="max")
      value = F.exp(value - F.repeat(value_max, seglen, dim=0))
      value_sum = segment_reduce(seglen, value, reducer="sum")
      return value / F.repeat(value_sum, seglen, dim=0)
  
imports: from ..None import backend
  from ..base import DGLError
label_desc: Use image node_id 2 for calling a global function with example usage: segment_softmax(seglen, value) and returns: unknown