示例#1
0
def test_ccipcanode_v1():
    line_x = numx.zeros((1000, 2), "d")
    line_y = numx.zeros((1000, 2), "d")
    line_x[:, 0] = numx.linspace(-1, 1, num=1000, endpoint=1)
    line_y[:, 1] = numx.linspace(-0.2, 0.2, num=1000, endpoint=1)
    mat = numx.concatenate((line_x, line_y))
    utils.rotate(mat, uniform() * 2 * numx.pi)
    mat += uniform(2)
    mat -= mat.mean(axis=0)
    pca = CCIPCANode()
    for i in range(5):
        pca.train(mat)

    bpca = PCANode()
    bpca.train(mat)
    bpca.stop_training()

    v = pca.get_projmatrix()
    bv = bpca.get_projmatrix()

    dcosines = numx.zeros(v.shape[1])
    for dim in range(v.shape[1]):
        dcosines[dim] = numx.fabs(numx.dot(v[:, dim], bv[:, dim].T)) / (
            numx.linalg.norm(v[:, dim]) * numx.linalg.norm(bv[:, dim]))
    assert_almost_equal(numx.ones(v.shape[1]), dcosines)
示例#2
0
def test_ccipcanode_v2():
    iterval = 30
    t = numx.linspace(0, 4 * numx.pi, 500)
    x = numx.zeros([t.shape[0], 2])
    x[:, 0] = numx.real(numx.sin(t) + numx.power(numx.cos(11 * t), 2))
    x[:, 1] = numx.cos(11 * t)
    expnode = PolynomialExpansionNode(2)
    input_data = expnode(x)
    input_data = input_data - input_data.mean(axis=0)

    ##Setup node/trainer
    output_dim = 4
    node = CCIPCANode(output_dim=output_dim)

    bpcanode = PCANode(output_dim=output_dim)
    bpcanode(input_data)
    # bv = bpcanode.v / numx.linalg.norm(bpcanode.v, axis=0)
    bv = bpcanode.v / mdp.numx.sum(bpcanode.v ** 2, axis=0) ** 0.5

    v = []

    _tcnt = time.time()
    for i in range(iterval * input_data.shape[0]):
        node.train(input_data[i % input_data.shape[0]:i % input_data.shape[0] + 1])
        if (node.get_current_train_iteration() % 100 == 0):
            v.append(node.v)

    dcosines = numx.zeros([len(v), output_dim])
    for i in range(len(v)):
        for dim in range(output_dim):
            dcosines[i, dim] = numx.fabs(numx.dot(v[i][:, dim], bv[:, dim].T)) / (
                numx.linalg.norm(v[i][:, dim]) * numx.linalg.norm(bv[:, dim]))

    print('\nTotal Time for {} iterations: {}'.format(iterval, time.time() - _tcnt))
    assert_almost_equal(numx.ones(output_dim), dcosines[-1], decimal=3)
示例#3
0
def test_ccipcanode_v1():
    line_x = numx.zeros((1000, 2), "d")
    line_y = numx.zeros((1000, 2), "d")
    line_x[:, 0] = numx.linspace(-1, 1, num=1000, endpoint=1)
    line_y[:, 1] = numx.linspace(-0.2, 0.2, num=1000, endpoint=1)
    mat = numx.concatenate((line_x, line_y))
    utils.rotate(mat, uniform() * 2 * numx.pi)
    mat += uniform(2)
    mat -= mat.mean(axis=0)
    pca = CCIPCANode()
    for i in xrange(5):
        pca.train(mat)

    bpca = PCANode()
    bpca.train(mat)
    bpca.stop_training()

    v = pca.get_projmatrix()
    bv = bpca.get_projmatrix()

    dcosines = numx.zeros(v.shape[1])
    for dim in xrange(v.shape[1]):
        dcosines[dim] = numx.fabs(numx.dot(v[:, dim], bv[:, dim].T)) / (
            numx.linalg.norm(v[:, dim]) * numx.linalg.norm(bv[:, dim]))
    assert_almost_equal(numx.ones(v.shape[1]), dcosines)
示例#4
0
def test_ccipcanode_numx_rng():
    x = mdp.numx_rand.randn(100, 5)

    numx_rng = mdp.numx_rand.RandomState(seed=10)
    node1 = CCIPCANode(numx_rng=numx_rng)
    node1.train(x)
    init_v1 = node1.init_eigen_vectors
    v1 = node1.get_projmatrix()

    numx_rng = mdp.numx_rand.RandomState(seed=10)
    node2 = CCIPCANode(numx_rng=numx_rng)
    node2.train(x)
    init_v2 = node2.init_eigen_vectors
    v2 = node2.get_projmatrix()

    assert_array_equal(init_v1, init_v2)
    assert_array_equal(v1, v2)
示例#5
0
def test_ccipcanode_v2():
    iterval = 30
    t = numx.linspace(0, 4 * numx.pi, 500)
    x = numx.zeros([t.shape[0], 2])
    x[:, 0] = numx.real(numx.sin(t) + numx.power(numx.cos(11 * t), 2))
    x[:, 1] = numx.cos(11 * t)
    expnode = PolynomialExpansionNode(2)
    input_data = expnode(x)
    input_data = input_data - input_data.mean(axis=0)

    ##Setup node/trainer
    output_dim = 4
    node = CCIPCANode(output_dim=output_dim)

    bpcanode = PCANode(output_dim=output_dim)
    bpcanode(input_data)
    # bv = bpcanode.v / numx.linalg.norm(bpcanode.v, axis=0)
    bv = bpcanode.v / mdp.numx.sum(bpcanode.v**2, axis=0)**0.5

    v = []

    _tcnt = time.time()
    for i in xrange(iterval * input_data.shape[0]):
        node.train(input_data[i % input_data.shape[0]:i % input_data.shape[0] +
                              1])
        if (node.get_current_train_iteration() % 100 == 0):
            v.append(node.v)

    dcosines = numx.zeros([len(v), output_dim])
    for i in xrange(len(v)):
        for dim in xrange(output_dim):
            dcosines[i,
                     dim] = numx.fabs(numx.dot(v[i][:, dim], bv[:, dim].T)) / (
                         numx.linalg.norm(v[i][:, dim]) *
                         numx.linalg.norm(bv[:, dim]))

    print
    print 'Total Time for %d iterations: ' % (iterval), time.time() - _tcnt
    assert_almost_equal(numx.ones(output_dim), dcosines[-1], decimal=3)
示例#6
0
def test_ccipcanode_numx_rng():
    x = mdp.numx_rand.randn(100, 5)

    numx_rng = mdp.numx_rand.RandomState(seed=10)
    node1 = CCIPCANode(numx_rng=numx_rng)
    node1.train(x)
    init_v1 = node1.init_eigen_vectors
    v1 = node1.get_projmatrix()

    numx_rng = mdp.numx_rand.RandomState(seed=10)
    node2 = CCIPCANode(numx_rng=numx_rng)
    node2.train(x)
    init_v2 = node2.init_eigen_vectors
    v2 = node2.get_projmatrix()

    assert_array_equal(init_v1, init_v2)
    assert_array_equal(v1, v2)