From 336c97f755e2c458211ac41f4fd672ac64fb0dcc Mon Sep 17 00:00:00 2001 From: ton Date: Tue, 29 Aug 2023 22:32:13 +0700 Subject: [PATCH] add voltage regulator --- src/IronpenGPU.jl | 1 + src/forward.jl | 17 ++++++++++++++++- src/learn.jl | 2 +- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/IronpenGPU.jl b/src/IronpenGPU.jl index f8d40a5..c2c6c19 100644 --- a/src/IronpenGPU.jl +++ b/src/IronpenGPU.jl @@ -27,6 +27,7 @@ using .interface """ version 0.0.7 Todo: + [] add voltage regulator [] synaptic liquidity range 0 to 100,000 -> 1.0 to 0.99 [] add weight liquidity [-] add temporal summation in addition to already used spatial summation. diff --git a/src/forward.jl b/src/forward.jl index 670d992..eaa910f 100644 --- a/src/forward.jl +++ b/src/forward.jl @@ -73,6 +73,7 @@ function (kfn::kfn_1)(input::AbstractArray) kfn.lif_firingCounter, kfn.lif_recSignal, kfn.lif_exInType, + kfn.lif_wRecChange, kfn.lif_neuronInactivityCounter, kfn.lif_synapticInactivityCounter, ) @@ -98,6 +99,7 @@ function (kfn::kfn_1)(input::AbstractArray) kfn.alif_firingCounter, kfn.alif_recSignal, kfn.alif_exInType, + kfn.alif_wRecChange, kfn.alif_neuronInactivityCounter, kfn.alif_synapticInactivityCounter, kfn.alif_epsilonRecA, @@ -165,6 +167,7 @@ function lifForward( zit::CuArray, firingCounter::CuArray, recSignal::CuArray, exInType::CuArray, + wRecChange::CuArray, neuronInactivityCounter::CuArray, synapticInactivityCounter::CuArray, ) @@ -184,6 +187,7 @@ function lifForward( zit::CuArray, firingCounter, recSignal, exInType, + wRecChange, neuronInactivityCounter, synapticInactivityCounter, GeneralUtils.linear_to_cartesian, @@ -217,6 +221,7 @@ function lifForward( zit::CuArray, firingCounter, recSignal, exInType, + wRecChange, neuronInactivityCounter, synapticInactivityCounter, GeneralUtils.linear_to_cartesian; threads, blocks) @@ -239,6 +244,7 @@ function lifForward( zit, firingCounter, recSignal, exInType, + wRecChange, neuronInactivityCounter, synapticInactivityCounter, linear_to_cartesian, @@ -299,7 +305,9 @@ function lifForward( zit, synapticInactivityCounter[i1,i2,i3,i4] -= 1 end end - + # voltage regulator + wRecChange[i1,i2,i3,i4] = -0.01*0.01 * (vt[i1,i2,i3,i4] - vth[i1,i2,i3,i4]) * + zit[i1,i2,i3,i4] end end return nothing @@ -321,6 +329,7 @@ function alifForward( zit::CuArray, firingCounter::CuArray, recSignal::CuArray, exInType::CuArray, + wRecChange::CuArray, neuronInactivityCounter::CuArray, synapticInactivityCounter::CuArray, epsilonRecA::CuArray, @@ -345,6 +354,7 @@ function alifForward( zit::CuArray, firingCounter, recSignal, exInType, + wRecChange, neuronInactivityCounter, synapticInactivityCounter, epsilonRecA, @@ -382,6 +392,7 @@ function alifForward( zit::CuArray, firingCounter, recSignal, exInType, + wRecChange, neuronInactivityCounter, synapticInactivityCounter, epsilonRecA, @@ -409,6 +420,7 @@ function alifForward( zit, firingCounter, recSignal, exInType, + wRecChange, neuronInactivityCounter, synapticInactivityCounter, epsilonRecA, @@ -486,6 +498,9 @@ function alifForward( zit, synapticInactivityCounter[i1,i2,i3,i4] -= 1 end end + # voltage regulator + wRecChange[i1,i2,i3,i4] = -0.01*0.01 * (vt[i1,i2,i3,i4] - avth[i1,i2,i3,i4]) * + zit[i1,i2,i3,i4] end end return nothing diff --git a/src/learn.jl b/src/learn.jl index ece6e8d..18a03c3 100644 --- a/src/learn.jl +++ b/src/learn.jl @@ -446,7 +446,7 @@ function neuroplasticity(synapticConnectionNumber, projection = ones(i1,i2,i3) zitMask = zitMask .* projection # (row, col, n) totalNewConn = sum(isequal.(wRec, -1.0), dims=(1,2)) # count new conn mark (-1.0), (1, 1, n) - # println("neuroplasticity, from $synapticConnectionNumber, $totalNewConn are replaced") + println("neuroplasticity, from $(synapticConnectionNumber*size(totalNewConn, 3)) conn, $(sum(totalNewConn)) are replaced") # clear -1.0 marker GeneralUtils.replace_elements!(wRec, -1.0, synapticInactivityCounter, -0.99)