code: def Slice_6(self, func):
          
          s0 = [d for d in func.slice_param.start]
          s0 = [0] + s0
          e0 = [d for d in func.slice_param.stop]
          e0 = [self._batch_size] + e0
          s1 = [0] * len(self._var_dict[func.input[0]].dim)
          e1 = [d for d in self._var_dict[func.input[0]].dim]
          nl = []
          for i, (m, n, s, e) in enumerate(zip(s0, e0, s1, e1)):
              if m > s or n < e:
                  starts = s1[:]
                  ends = e1[:]
                  starts[i] = m
                  ends[i] = n
                  n = onnx.helper.make_node(
                      "Slice",
                      func.input,
                      func.output,
                      name=func.name,
                      starts=starts,
                      ends=ends,
                  )
                  nl.append(n)
  
          if not nl:
              # full equal, no slice
              # we have to create a node
              # to pass the data
              starts = s1[:]
              ends = e1[:]
              n = onnx.helper.make_node(
                  "Slice",
                  func.input,
                  func.output,
                  name=func.name,
                  starts=starts,
                  ends=ends,
              )
              nl.append(n)
  
          for i in range(len(nl)-1):
              fork = fork_name("SliceIter")
              del nl[i].output[:]
              nl[i].output.extend([fork])
              del nl[i+1].input[:]
              nl[i+1].input.extend([fork])
  
          return nl
docs: nnabla slice assume a batch dimension existed in
          the shape of input data.
          Onnx caffe2 implementation only support one dimension
          for each slice, hence, we connect multiple slice
          node to implement slice with multiple axis