def create_fullyconnected_net(num_nodes, rescale_frac=0.999, noise_std=0.0, random_initial_state=False, symmetric=False, feedforward=False, connection_rate=1.0): net = EchoStateNetwork() net.noise_std = noise_std for k in range(num_nodes): n = k istate = 0.0 if random_initial_state: istate = np.abs(np.random.randn()) net.create_node(n, initial_state=istate) W = np.random.randn(num_nodes, num_nodes) if symmetric: for k1 in range(num_nodes): for k2 in range(k1): W[k2, k1] = W[k1, k2] if feedforward: for k1 in range(num_nodes): for k2 in range(k1+1): W[k1, k2] = 0.0 for k1 in range(num_nodes): for k2 in range(num_nodes): rn = np.random.rand() if rn < connection_rate: net.connect_nodes(k1, k2, W[k1, k2]) net.rescale_weights(rescale_frac) return net