code: def makelinks(
      self, nifm, ifmsize, ifmshape, ofmshape, fshape, strides
  ):
      ndims = len(ifmshape)
      dimsizes = np.empty(ndims, dtype="int32")
      for dim in range(ndims):
          dimsizes[dim] = np.prod(ifmshape[dim:])
      links = []
      for ofmdim in np.ndindex(ofmshape):
          src = ofmdim[-1]
          for dim in range(-1, -ndims, -1):
              src += dimsizes[dim] * ofmdim[dim - 1]
          src *= strides
          indlist = list(range(src, src + fshape[-1]))
          for dim in range(-1, -ndims, -1):
              indarray = np.array(indlist)
              for dimind in range(1, fshape[dim - 1]):
                  indlist.extend(
                      list(indarray + dimind * dimsizes[dim])
                  )
          indarray = np.array(indlist)
          for ifm in range(1, nifm):
              indlist.extend(list(indarray + ifm * ifmsize))
          links.append(indlist)
      self.links = np.array(links, dtype="int32")
  
file_path: neon/tests/test_deconv_layer.py
imports: import itertools
  import numpy
  import pytest
  from neon import NervanaObject
  from neon.layers import Deconvolution
  from neon.initializers import Uniform
  from utils import allclose_with_out
label_desc: Use image node_id 2 for calling the DeconvRefLayer obj's underlying member method code with example usage: obj.makelinks(nifm, ifmsize, ifmshape, ofmshape, fshape, strides) without return types