code: def test_neibs_bad_shape(self):
      shape = (2, 3, 10, 10)
      for dtype in self.dtypes:
          images = shared(
              np.arange(np.prod(shape), dtype=dtype).reshape(shape)
          )
  
          for neib_shape in [(3, 2), (2, 3)]:
              neib_shape = T.as_tensor_variable(neib_shape)
              f = function(
                  [], images2neibs(images, neib_shape), mode=self.mode
              )
              self.assertRaises(TypeError, f)
  
              # Test that ignore border work in that case.
              f = function(
                  [],
                  images2neibs(
                      images, neib_shape, mode="ignore_borders"
                  ),
                  mode=self.mode,
              )
              assert self.op in [
                  type(node.op) for node in f.maker.fgraph.toposort()
              ]
              f()
  
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 4 for calling the T_Images2Neibs obj's underlying member method code with example usage: obj.test_neibs_bad_shape() without return types