コード例 #1
0
def test_generate_internal_shape(N, expected):
    if expected is Exception:
        with pytest.raises(expected):
            generate_internal_weights(N)
    else:
        W = generate_internal_weights(N)
        assert W.shape == expected
コード例 #2
0
ファイル: test_mat_gen.py プロジェクト: james901/reservoirpy
def test_reproducibility_W():

    seed0 = default_rng(78946312)
    W0 = generate_internal_weights(N=100,
                                   sr=1.2,
                                   proba=0.4,
                                   dist="uniform",
                                   low=-1,
                                   high=1,
                                   seed=seed0).toarray()

    seed1 = default_rng(78946312)
    W1 = generate_internal_weights(N=100,
                                   sr=1.2,
                                   proba=0.4,
                                   dist="uniform",
                                   low=-1,
                                   high=1,
                                   seed=seed1).toarray()

    seed2 = default_rng(6135435)
    W2 = generate_internal_weights(N=100,
                                   sr=1.2,
                                   proba=0.4,
                                   dist="uniform",
                                   low=-1,
                                   high=1,
                                   seed=seed2).toarray()

    assert_array_almost_equal(W0, W1)
    assert_raises(AssertionError, assert_array_almost_equal, W0, W2)
コード例 #3
0
def test_generate_internal_features(sr, proba):

    W = generate_internal_weights(100, spectral_radius=sr,
                                  proba=proba, seed=1234)

    assert_almost_equal(max(abs(linalg.eig(W)[0])), sr, decimal=2)
    assert_almost_equal(np.sum(W != 0.0) / W.size, proba, decimal=1)
コード例 #4
0
def test_generate_internal_features(sr, proba):

    W = generate_internal_weights(100,
                                  sr=sr,
                                  proba=proba,
                                  seed=1234,
                                  sparsity_type='dense')

    assert_almost_equal(max(abs(linalg.eig(W)[0])), sr, decimal=2)
    assert_almost_equal(np.sum(W != 0.0) / W.size, proba, decimal=1)
コード例 #5
0
def test_generate_internal_features(sr, proba):

    W = generate_internal_weights(100,
                                  sr=sr,
                                  proba=proba,
                                  seed=1234,
                                  sparsity_type="dense")

    assert_allclose(max(abs(linalg.eig(W)[0])), sr)
    assert_allclose(np.sum(W != 0.0) / W.size, proba)
コード例 #6
0
def test_generate_internal_sparse(sr, proba):

    W = generate_internal_weights(100, spectral_radius=sr,
                                  proba=proba, sparsity_type="csr")

    rho = max(abs(sparse.linalg.eigs(W, k=1, which='LM', return_eigenvectors=False)))
    assert_almost_equal(rho, sr, decimal=2)

    if sparse.issparse(W):
        assert_almost_equal(np.sum(W.toarray() != 0.0) / W.toarray().size,
                            proba, decimal=1)
    else:
        assert_almost_equal(np.sum(W != 0.0) / W.size, proba, decimal=1)
コード例 #7
0
def esn():
    W = generate_internal_weights(N,
                                  sr=SR,
                                  proba=1.0,
                                  dist="uniform",
                                  seed=rng)
    Win = generate_input_weights(N,
                                 1,
                                 input_scaling=IS,
                                 proba=1,
                                 input_bias=True,
                                 seed=rng)

    a = np.ones((1, N))
    b = np.zeros((1, N))

    return W, Win, a, b
コード例 #8
0
def test_generate_internal_sparse(sr, proba):

    W = generate_internal_weights(100,
                                  sr=sr,
                                  proba=proba,
                                  sparsity_type="csr",
                                  seed=42)

    rho = max(
        abs(
            sparse.linalg.eigs(W,
                               k=1,
                               which="LM",
                               maxiter=20 * W.shape[0],
                               return_eigenvectors=False)))
    assert_allclose(rho, sr)

    if sparse.issparse(W):
        assert_allclose(np.sum(W.toarray() != 0.0) / W.toarray().size, proba)
    else:
        assert_allclose(np.sum(W != 0.0) / W.size, proba)
コード例 #9
0
def test_generate_internal_features_exception(sr, proba):
    with pytest.raises(Exception):
        generate_internal_weights(100, sr=sr, proba=proba)