def test_qr_decomposition(dtype, R, R1):
    np.random.seed(10)
    D = 30
    charges = [U1Charge.random(-5, 5, D) for n in range(R)]
    flows = [True] * R
    A = BlockSparseTensor.random(
        [Index(charges[n], flows[n]) for n in range(R)], dtype=dtype)

    q, r = decompositions.qr_decomposition(bs, A, R1)
    res = bs.tensordot(q, r, 1)
    q_dense, r_dense = np_decompositions.qr_decomposition(np, A.todense(), R1)
    res2 = np.tensordot(q_dense, r_dense, 1)
    np.testing.assert_almost_equal(res.todense(), res2)
 def test_qr_decomposition(self):
     random_matrix = np.random.rand(10, 10)
     q, r = decompositions.qr_decomposition(np, random_matrix, 1)
     self.assertAllClose(q.dot(r), random_matrix)
 def test_expected_shapes_qr(self):
     val = np.zeros((2, 3, 4, 5))
     q, r = decompositions.qr_decomposition(np, val, 2)
     self.assertEqual(q.shape_tensor, (2, 3, 6))
     self.assertEqual(r.shape_tensor, (6, 4, 5))
Esempio n. 4
0
 def qr_decomposition(
     self,
     tensor: Tensor,
     split_axis: int,
 ) -> Tuple[Tensor, Tensor]:
     return decompositions.qr_decomposition(np, tensor, split_axis)