code: def test_grad_int(self):
      # tests that the gradient with respect to an integer
      # is the same as the gradient with respect to a float
  
      W = theano.tensor.matrix()
      b = theano.tensor.vector()
  
      def make_grad_func(X):
          Z = theano.tensor.dot(X, W) + b
          H = theano.tensor.nnet.sigmoid(Z)
          cost = H.sum()
          g = gradient.grad(cost, X)
          return theano.function([X, W, b], g, on_unused_input="ignore")
  
      int_func = make_grad_func(theano.tensor.imatrix())
      # we have to use float64 as the float type to get the results to match
      # using an integer for the input makes all the later functions use
      # float64
      float_func = make_grad_func(theano.tensor.matrix(dtype="float64"))
  
      m = 5
      d = 3
      n = 4
      rng = np.random.RandomState([2012, 9, 5])
  
      int_type = theano.tensor.imatrix().dtype
      float_type = "float64"
  
      X = np.cast[int_type](rng.randn(m, d) * 127.0)
      W = np.cast[W.dtype](rng.randn(d, n))
      b = np.cast[b.dtype](rng.randn(n))
  
      int_result = int_func(X, W, b)
      float_result = float_func(np.cast[float_type](X), W, b)
  
      assert np.allclose(int_result, float_result), (
          int_result,
          float_result,
      )
  
imports: from __future__ import absolute_import, print_function, division
  from collections import OrderedDict
  import unittest
  import numpy
  from six.moves import xrange
  import theano
  from theano import gof, change_flags
  from theano.compat import izip
  from theano.tests import unittest_tools
  from theano import gradient
  from theano import config
  from theano.gof.null_type import NullType
  from theano.sandbox.rng_mrg import MRG_RandomStreams
label_desc: Use image node_id 12 for calling the test_grad obj's underlying member method code with example usage: obj.test_grad_int() and returns: theano