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 is Xoshiro(1234).
  • T: Element type. Default is Float32.
  • 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 (SparseArrays required). 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
source