add voltage regulator

This commit is contained in:
ton
2023-08-29 22:32:13 +07:00
parent 619e8d7f83
commit 336c97f755
3 changed files with 18 additions and 2 deletions

View File

@@ -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.

View File

@@ -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

View File

@@ -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)