Example #1
0
 def test_numpy_2d(self):
     for shp0 in [(2, 3)]:
         x = tensor(dtype="floatX", broadcastable=(False,) * len(shp0))
         a = np.asarray(self.rng.rand(*shp0)).astype(config.floatX)
         for shp1 in [(6, 7)]:
             if len(shp0) + len(shp1) == 2:
                 continue
             y = tensor(dtype="floatX", broadcastable=(False,) * len(shp1))
             f = function([x, y], kron(x, y))
             b = self.rng.rand(*shp1).astype(config.floatX)
             out = f(a, b)
             assert np.allclose(out, np.kron(a, b))
Example #2
0
 def test_perform(self):
     for shp0 in [(2,), (2, 3), (2, 3, 4), (2, 3, 4, 5)]:
         x = tensor(dtype="floatX", shape=(False,) * len(shp0))
         a = np.asarray(self.rng.random(shp0)).astype(config.floatX)
         for shp1 in [(6,), (6, 7), (6, 7, 8), (6, 7, 8, 9)]:
             if len(shp0) + len(shp1) == 2:
                 continue
             y = tensor(dtype="floatX", shape=(False,) * len(shp1))
             f = function([x, y], kron(x, y))
             b = self.rng.random(shp1).astype(config.floatX)
             out = f(a, b)
             # Newer versions of scipy want 4 dimensions at least,
             # so we have to add a dimension to a and flatten the result.
             if len(shp0) + len(shp1) == 3:
                 scipy_val = scipy.linalg.kron(a[np.newaxis, :], b).flatten()
             else:
                 scipy_val = scipy.linalg.kron(a, b)
             utt.assert_allclose(out, scipy_val)