def matrix_pair(self, rng, size): eigvec = nla.qr(rng.standard_normal((size, size)))[0] eigval = np.abs(rng.standard_normal(size)) return ( matrices.EigendecomposedPositiveDefiniteMatrix(eigvec, eigval), (eigvec * eigval) @ eigvec.T, )
def _generate_metrics(rng, size, eigval_scale=0.1): eigval, eigvec = _generate_rand_eigval_eigvec(rng, size, eigval_scale) return [ matrices.IdentityMatrix(), matrices.IdentityMatrix(size), matrices.PositiveDiagonalMatrix(eigval), matrices.DensePositiveDefiniteMatrix((eigvec * eigval) @ eigvec.T), matrices.EigendecomposedPositiveDefiniteMatrix(eigvec, eigval) ]
def __init__(self): matrix_pairs = {} rng = np.random.RandomState(SEED) for sz in SIZES: eigvec = nla.qr(rng.standard_normal((sz, sz)))[0] eigval = np.abs(rng.standard_normal(sz)) matrix_pairs[sz] = (matrices.EigendecomposedPositiveDefiniteMatrix( eigvec, eigval), (eigvec * eigval) @ eigvec.T) super().__init__(matrix_pairs, rng)
def metric_list(rng, size): eigval = np.exp(0.1 * rng.standard_normal(size)) eigvec = np.linalg.qr(rng.standard_normal((size, size)))[0] return [ matrices.IdentityMatrix(), matrices.IdentityMatrix(size), matrices.PositiveDiagonalMatrix(eigval), matrices.DensePositiveDefiniteMatrix((eigvec * eigval) @ eigvec.T), matrices.EigendecomposedPositiveDefiniteMatrix(eigvec, eigval), ]