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
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)
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)
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)
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)
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)
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
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)
def test_generate_internal_features_exception(sr, proba): with pytest.raises(Exception): generate_internal_weights(100, sr=sr, proba=proba)