delay_line!
ReservoirComputing.delay_line! — Functiondelay_line!([rng], reservoir_matrix, weight, shift;
sampling_type=:no_sample, irrational=pi, start=1,
p=0.5)Adds a delay line in the reservoir_matrix, with given shift and weight. The weight can be a single number or an array.
Arguments
rng: Random number generator. Default isUtils.default_rng()from WeightInitializers.reservoir_matrix: matrix to be changed.weight: weight to add as a delay line. Can be either a single number or an array.shift: How far the delay line will be from the diagonal.
Keyword arguments
sampling_type: Sampling that decides the distribution ofweightnegative numbers. If set to:no_samplethe sign is unchanged. If set to:bernoulli_sample!then eachweightcan be positive with a probability set bypositive_prob. If set to:irrational_sample!theweightis negative if the decimal number of the irrational number chosen is odd. If set to:regular_sample!, each weight will be assigned a negative sign after the chosenstrides.stridescan be a single number or an array. Default is:no_sample.positive_prob: probability of theweightbeing positive whensampling_typeis set to:bernoulli_sample!. Default is 0.5.irrational: Irrational number whose decimals decide the sign ofweight. Default ispi.start: Which place after the decimal point the counting starts for theirrationalsign counting. Default is 1.strides: number of strides for assigning negative value to a weight. It can be an integer or an array. Default is 2.
Examples
julia> matrix = zeros(Float32, 5, 5)
5×5 Matrix{Float32}:
0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0
julia> delay_line!(matrix, 5.0, 2)
5×5 Matrix{Float32}:
0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0
5.0 0.0 0.0 0.0 0.0
0.0 5.0 0.0 0.0 0.0
0.0 0.0 5.0 0.0 0.0
julia> delay_line!(matrix, 5.0, 2; sampling_type=:bernoulli_sample!)
5×5 Matrix{Float32}:
0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0
5.0 0.0 0.0 0.0 0.0
0.0 -5.0 0.0 0.0 0.0
0.0 0.0 5.0 0.0 0.0