dale_sparse
ReservoirComputing.dale_sparse — Function
dale_sparse([rng], [T], dims...;
excitatory_fraction=0.8, sparsity=0.1, std=1.0,
radius=1.0, ei_weight_ratio=1.0, return_sparse=false)Dale-compliant sparse reservoir: first round(excitatory_fraction * n) columns excitatory (non-negative), rest inhibitory (non-positive). Inhibitory magnitudes scaled by ei_weight_ratio, then spectral radius to radius. Every column keeps at least one nonzero entry, whatever the size and sparsity, so the matrix is never all zero and can be scaled to radius.
Arguments
rng: Random number generator. Default isXoshiro(1234).T: Element type. Default isFloat32.dims: Square matrix dimensions.
Keyword arguments
excitatory_fraction: Fraction of excitatory units in(0, 1). Default:0.8.sparsity: Fraction of nonzero entries in each column, never fewer than one per column. Default:0.1.std: Sparse initialiser standard deviation. Default:1.0.radius: Spectral radius. Default:1.0.ei_weight_ratio: Inhibitory magnitude scale. Default:1.0.return_sparse: Sparse return (SparseArraysrequired). Default:false.
Examples
julia> rng = MersenneTwister(123);
julia> W = dale_sparse(rng, 10, 10; excitatory_fraction = 0.8, sparsity = 0.3);
julia> size(W) == (10, 10) && all(>=(0), W[:, 1:8]) && all(<=(0), W[:, 9:10])
true