Ejemplo n.º 1
0
 def matrix_pair(self, rng, size, size_inner):
     left_factor_matrix = rng.standard_normal((size, size_inner))
     right_factor_matrix = rng.standard_normal((size_inner, size))
     inner_square_matrix = rng.standard_normal((size_inner, size_inner))
     square_matrix = rng.standard_normal((size, size))
     return (
         matrices.SquareLowRankUpdateMatrix(
             matrices.DenseRectangularMatrix(left_factor_matrix),
             matrices.DenseRectangularMatrix(right_factor_matrix),
             matrices.DenseSquareMatrix(square_matrix),
             matrices.DenseSquareMatrix(inner_square_matrix),
         ),
         square_matrix
         + left_factor_matrix @ (inner_square_matrix @ right_factor_matrix),
     )
Ejemplo n.º 2
0
 def __init__(self):
     matrix_pairs = {}
     rng = np.random.RandomState(SEED)
     for sz in SIZES:
         array = rng.standard_normal((sz, sz))
         matrix_pairs[sz] = (matrices.DenseSquareMatrix(array), array)
     super().__init__(matrix_pairs, rng)
Ejemplo n.º 3
0
 def matrix_pair(self, rng, size, request):
     n_terms = request.param
     arrays = [rng.standard_normal((size, size)) for _ in range(n_terms)]
     matrix = matrices.SquareMatrixProduct(
         [matrices.DenseSquareMatrix(a) for a in arrays]
     )
     return matrix, nla.multi_dot(arrays)
Ejemplo n.º 4
0
 def __init__(self):
     super().__init__()
     for sz in SIZES:
         for transposed in [True, False]:
             array = self.rng.standard_normal((sz, sz))
             self.matrices[sz] = matrices.DenseSquareMatrix(
                 array, transposed)
             self.np_matrices[sz] = array.T if transposed else array
Ejemplo n.º 5
0
 def matrix_pair(self, rng, size, n_block):
     blocks = [rng.standard_normal((size, size)) for _ in range(n_block)]
     return (
         matrices.BlockColumnMatrix(
             matrices.DenseSquareMatrix(block) for block in blocks
         ),
         np.vstack(blocks),
     )
Ejemplo n.º 6
0
 def matrix_pair(self, rng, size, n_block):
     arrays = [rng.standard_normal((size, size)) for _ in range(n_block)]
     return (
         matrices.SquareBlockDiagonalMatrix(
             matrices.DenseSquareMatrix(arr) for arr in arrays
         ),
         sla.block_diag(*arrays),
     )
Ejemplo n.º 7
0
 def matrix_pair(self, rng, size, request):
     n_terms, explicit = request.param
     arrays = [rng.standard_normal((size, size)) for _ in range(n_terms)]
     matrices_ = [matrices.DenseSquareMatrix(a) for a in arrays]
     if explicit:
         matrix = matrices.InvertibleMatrixProduct(matrices_)
     else:
         matrix = reduce(lambda a, b: a @ b, matrices_)
     return matrix, nla.multi_dot(arrays)
Ejemplo n.º 8
0
 def __init__(self):
     matrix_pairs = {}
     rng = np.random.RandomState(SEED)
     for s in SIZES:
         for n_blocks in [2, 5]:
             blocks = [rng.standard_normal((s, s)) for _ in range(n_blocks)]
             matrix_pairs[(s, n_blocks)] = (matrices.BlockColumnMatrix(
                 matrices.DenseSquareMatrix(block)
                 for block in blocks), np.vstack(blocks))
     super().__init__(matrix_pairs, rng)
Ejemplo n.º 9
0
 def __init__(self):
     matrix_pairs = {}
     rng = np.random.RandomState(SEED)
     for s in SIZES:
         for n_terms in [2, 5]:
             arrays = [rng.standard_normal((s, s)) for _ in range(n_terms)]
             matrix = matrices.SquareMatrixProduct(
                 [matrices.DenseSquareMatrix(a) for a in arrays])
             matrix_pairs[(s, n_terms)] = (matrix, nla.multi_dot(arrays))
     super().__init__(matrix_pairs, rng)
Ejemplo n.º 10
0
 def __init__(self):
     matrix_pairs = {}
     rng = np.random.RandomState(SEED)
     for s in SIZES:
         for n_block in [1, 2, 5]:
             arrays = [rng.standard_normal((s, s)) for _ in range(n_block)]
             matrix_pairs[(s,
                           n_block)] = (matrices.SquareBlockDiagonalMatrix(
                               matrices.DenseSquareMatrix(arr)
                               for arr in arrays), sla.block_diag(*arrays))
     super().__init__(matrix_pairs, rng)
Ejemplo n.º 11
0
 def __init__(self):
     matrix_pairs = {}
     rng = np.random.RandomState(SEED)
     for outer_dim in SIZES:
         for inner_dim in [max(1, outer_dim // 2), max(1, outer_dim - 1)]:
             left_factor_matrix = rng.standard_normal(
                 (outer_dim, inner_dim))
             right_factor_matrix = rng.standard_normal(
                 (inner_dim, outer_dim))
             inner_square_matrix = rng.standard_normal(
                 (inner_dim, inner_dim))
             square_matrix = rng.standard_normal((outer_dim, outer_dim))
             matrix_pairs[(inner_dim, outer_dim)] = (
                 matrices.SquareLowRankUpdateMatrix(
                     matrices.DenseRectangularMatrix(left_factor_matrix),
                     matrices.DenseRectangularMatrix(right_factor_matrix),
                     matrices.DenseSquareMatrix(square_matrix),
                     matrices.DenseSquareMatrix(inner_square_matrix)),
                 square_matrix + left_factor_matrix
                 @ (inner_square_matrix @ right_factor_matrix))
     super().__init__(matrix_pairs, rng)
Ejemplo n.º 12
0
 def __init__(self):
     matrix_pairs = {}
     rng = np.random.RandomState(SEED)
     for s in SIZES:
         for n_terms in [2, 5]:
             for explicit in [True, False]:
                 arrays = [
                     rng.standard_normal((s, s)) for _ in range(n_terms)
                 ]
                 matrices_ = [matrices.DenseSquareMatrix(a) for a in arrays]
                 if explicit:
                     matrix = matrices.InvertibleMatrixProduct(matrices_)
                 else:
                     matrix = reduce(lambda a, b: a @ b, matrices_)
                 matrix_pairs[(s, n_terms,
                               explicit)] = (matrix, nla.multi_dot(arrays))
     super().__init__(matrix_pairs, rng)
Ejemplo n.º 13
0
 def matrix_pair(self, rng, size):
     array = rng.standard_normal((size, size))
     return matrices.DenseSquareMatrix(array), array