code: def test_neibs_manual(self):
      shape = (2, 3, 4, 4)
      for dtype in self.dtypes:
          images = shared(
              np.arange(np.prod(shape), dtype=dtype).reshape(shape)
          )
          neib_shape = T.as_tensor_variable((2, 2))
  
          for border in ["valid", "ignore_borders"]:
              f = function(
                  [],
                  images2neibs(images, neib_shape, mode=border),
                  mode=self.mode,
              )
              assert any(
                  [
                      isinstance(node.op, self.op)
                      for node in f.maker.fgraph.toposort()
                  ]
              )
  
              # print images.get_value(borrow=True)
              neibs = f()
              # print neibs
              assert np.allclose(
                  neibs,
                  [
                      [0, 1, 4, 5],
                      [2, 3, 6, 7],
                      [8, 9, 12, 13],
                      [10, 11, 14, 15],
                      [16, 17, 20, 21],
                      [18, 19, 22, 23],
                      [24, 25, 28, 29],
                      [26, 27, 30, 31],
                      [32, 33, 36, 37],
                      [34, 35, 38, 39],
                      [40, 41, 44, 45],
                      [42, 43, 46, 47],
                      [48, 49, 52, 53],
                      [50, 51, 54, 55],
                      [56, 57, 60, 61],
                      [58, 59, 62, 63],
                      [64, 65, 68, 69],
                      [66, 67, 70, 71],
                      [72, 73, 76, 77],
                      [74, 75, 78, 79],
                      [80, 81, 84, 85],
                      [82, 83, 86, 87],
                      [88, 89, 92, 93],
                      [90, 91, 94, 95],
                  ],
              )
              g = function(
                  [],
                  neibs2images(neibs, neib_shape, images.shape),
                  mode=self.mode,
              )
  
              assert np.allclose(images.get_value(borrow=True), g())
  
imports: from __future__ import absolute_import, print_function, division
  import numpy
  import unittest
  import theano
  from theano import shared, function
  import theano.tensor
  from theano.tensor.nnet.neighbours import images2neibs, neibs2images, Images2Neibs
  from theano.tests import unittest_tools
  from theano import change_flags
label_desc: Use image node_id 2 for calling the T_Images2Neibs obj's underlying member method code with example usage: obj.test_neibs_manual() without return types