コード例 #1
0
def evaluator(shape, density, r, iters=10):
    index_sets = [generate_sorted_sigma_set(shape, density) for _ in range(iters)]
    ur, vr = np.random.normal(size=(shape[0], r)), np.random.normal(size=(r, shape[1]))
    elem = ManifoldElement((ur, vr), r)

    timings = np.zeros(iters)
    for it in range(iters):
        timings[it] = timeit.Timer(lambda: elem.evaluate(index_sets[it])).timeit(number=1)
        print('next timing: %s' % timings[it])
    print(timings)
    print('min: %s, mean: %s, max: %s' % (timings.min(), timings.mean(), timings.max()))
    return None
コード例 #2
0
def obvious_test(shape, r, niter=10):
    percent = 0.5
    sigma_set = generate_sigma_set(shape, percent)
    a_full = shape[1]*np.arange(shape[0])[:, None] + np.arange(shape[1])
    a_sparse = lil_matrix(shape)
    for (i, j) in zip(*sigma_set):
        a_sparse[i, j] = a_full[i, j]
    a_sparse = csr_matrix(a_sparse)
    x = ManifoldElement.rand(shape, r)
    grad = riemannian_grad_partial(x, a_sparse, sigma_set, manifold_elems=True)
    new_grad = vector_transport_base(x, x, grad)
    for elem, new_elem in zip(grad, new_grad):
        assert(np.allclose(elem.full_matrix(), new_elem.full_matrix()))