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)) square_matrix = rng.standard_normal((size, size)) return ( matrices.SquareLowRankUpdateMatrix( matrices.DenseRectangularMatrix(left_factor_matrix), matrices.DenseRectangularMatrix(right_factor_matrix), matrices.DenseSquareMatrix(square_matrix), ), square_matrix + left_factor_matrix @ right_factor_matrix, )
def __init__(self): matrix_pairs = {} rng = np.random.RandomState(SEED) for outer_dim in SIZES: inner_dim = max(1, outer_dim // 2) left_factor_matrix = rng.standard_normal((outer_dim, inner_dim)) right_factor_matrix = rng.standard_normal((inner_dim, outer_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)), square_matrix + left_factor_matrix @ right_factor_matrix) super().__init__(matrix_pairs, rng)