add voltage regulator
This commit is contained in:
@@ -27,6 +27,7 @@ using .interface
|
|||||||
|
|
||||||
""" version 0.0.7
|
""" version 0.0.7
|
||||||
Todo:
|
Todo:
|
||||||
|
[] add voltage regulator
|
||||||
[] synaptic liquidity range 0 to 100,000 -> 1.0 to 0.99
|
[] synaptic liquidity range 0 to 100,000 -> 1.0 to 0.99
|
||||||
[] add weight liquidity
|
[] add weight liquidity
|
||||||
[-] add temporal summation in addition to already used spatial summation.
|
[-] add temporal summation in addition to already used spatial summation.
|
||||||
|
|||||||
@@ -73,6 +73,7 @@ function (kfn::kfn_1)(input::AbstractArray)
|
|||||||
kfn.lif_firingCounter,
|
kfn.lif_firingCounter,
|
||||||
kfn.lif_recSignal,
|
kfn.lif_recSignal,
|
||||||
kfn.lif_exInType,
|
kfn.lif_exInType,
|
||||||
|
kfn.lif_wRecChange,
|
||||||
kfn.lif_neuronInactivityCounter,
|
kfn.lif_neuronInactivityCounter,
|
||||||
kfn.lif_synapticInactivityCounter,
|
kfn.lif_synapticInactivityCounter,
|
||||||
)
|
)
|
||||||
@@ -98,6 +99,7 @@ function (kfn::kfn_1)(input::AbstractArray)
|
|||||||
kfn.alif_firingCounter,
|
kfn.alif_firingCounter,
|
||||||
kfn.alif_recSignal,
|
kfn.alif_recSignal,
|
||||||
kfn.alif_exInType,
|
kfn.alif_exInType,
|
||||||
|
kfn.alif_wRecChange,
|
||||||
kfn.alif_neuronInactivityCounter,
|
kfn.alif_neuronInactivityCounter,
|
||||||
kfn.alif_synapticInactivityCounter,
|
kfn.alif_synapticInactivityCounter,
|
||||||
kfn.alif_epsilonRecA,
|
kfn.alif_epsilonRecA,
|
||||||
@@ -165,6 +167,7 @@ function lifForward( zit::CuArray,
|
|||||||
firingCounter::CuArray,
|
firingCounter::CuArray,
|
||||||
recSignal::CuArray,
|
recSignal::CuArray,
|
||||||
exInType::CuArray,
|
exInType::CuArray,
|
||||||
|
wRecChange::CuArray,
|
||||||
neuronInactivityCounter::CuArray,
|
neuronInactivityCounter::CuArray,
|
||||||
synapticInactivityCounter::CuArray,
|
synapticInactivityCounter::CuArray,
|
||||||
)
|
)
|
||||||
@@ -184,6 +187,7 @@ function lifForward( zit::CuArray,
|
|||||||
firingCounter,
|
firingCounter,
|
||||||
recSignal,
|
recSignal,
|
||||||
exInType,
|
exInType,
|
||||||
|
wRecChange,
|
||||||
neuronInactivityCounter,
|
neuronInactivityCounter,
|
||||||
synapticInactivityCounter,
|
synapticInactivityCounter,
|
||||||
GeneralUtils.linear_to_cartesian,
|
GeneralUtils.linear_to_cartesian,
|
||||||
@@ -217,6 +221,7 @@ function lifForward( zit::CuArray,
|
|||||||
firingCounter,
|
firingCounter,
|
||||||
recSignal,
|
recSignal,
|
||||||
exInType,
|
exInType,
|
||||||
|
wRecChange,
|
||||||
neuronInactivityCounter,
|
neuronInactivityCounter,
|
||||||
synapticInactivityCounter,
|
synapticInactivityCounter,
|
||||||
GeneralUtils.linear_to_cartesian; threads, blocks)
|
GeneralUtils.linear_to_cartesian; threads, blocks)
|
||||||
@@ -239,6 +244,7 @@ function lifForward( zit,
|
|||||||
firingCounter,
|
firingCounter,
|
||||||
recSignal,
|
recSignal,
|
||||||
exInType,
|
exInType,
|
||||||
|
wRecChange,
|
||||||
neuronInactivityCounter,
|
neuronInactivityCounter,
|
||||||
synapticInactivityCounter,
|
synapticInactivityCounter,
|
||||||
linear_to_cartesian,
|
linear_to_cartesian,
|
||||||
@@ -299,7 +305,9 @@ function lifForward( zit,
|
|||||||
synapticInactivityCounter[i1,i2,i3,i4] -= 1
|
synapticInactivityCounter[i1,i2,i3,i4] -= 1
|
||||||
end
|
end
|
||||||
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
|
||||||
end
|
end
|
||||||
return nothing
|
return nothing
|
||||||
@@ -321,6 +329,7 @@ function alifForward( zit::CuArray,
|
|||||||
firingCounter::CuArray,
|
firingCounter::CuArray,
|
||||||
recSignal::CuArray,
|
recSignal::CuArray,
|
||||||
exInType::CuArray,
|
exInType::CuArray,
|
||||||
|
wRecChange::CuArray,
|
||||||
neuronInactivityCounter::CuArray,
|
neuronInactivityCounter::CuArray,
|
||||||
synapticInactivityCounter::CuArray,
|
synapticInactivityCounter::CuArray,
|
||||||
epsilonRecA::CuArray,
|
epsilonRecA::CuArray,
|
||||||
@@ -345,6 +354,7 @@ function alifForward( zit::CuArray,
|
|||||||
firingCounter,
|
firingCounter,
|
||||||
recSignal,
|
recSignal,
|
||||||
exInType,
|
exInType,
|
||||||
|
wRecChange,
|
||||||
neuronInactivityCounter,
|
neuronInactivityCounter,
|
||||||
synapticInactivityCounter,
|
synapticInactivityCounter,
|
||||||
epsilonRecA,
|
epsilonRecA,
|
||||||
@@ -382,6 +392,7 @@ function alifForward( zit::CuArray,
|
|||||||
firingCounter,
|
firingCounter,
|
||||||
recSignal,
|
recSignal,
|
||||||
exInType,
|
exInType,
|
||||||
|
wRecChange,
|
||||||
neuronInactivityCounter,
|
neuronInactivityCounter,
|
||||||
synapticInactivityCounter,
|
synapticInactivityCounter,
|
||||||
epsilonRecA,
|
epsilonRecA,
|
||||||
@@ -409,6 +420,7 @@ function alifForward( zit,
|
|||||||
firingCounter,
|
firingCounter,
|
||||||
recSignal,
|
recSignal,
|
||||||
exInType,
|
exInType,
|
||||||
|
wRecChange,
|
||||||
neuronInactivityCounter,
|
neuronInactivityCounter,
|
||||||
synapticInactivityCounter,
|
synapticInactivityCounter,
|
||||||
epsilonRecA,
|
epsilonRecA,
|
||||||
@@ -486,6 +498,9 @@ function alifForward( zit,
|
|||||||
synapticInactivityCounter[i1,i2,i3,i4] -= 1
|
synapticInactivityCounter[i1,i2,i3,i4] -= 1
|
||||||
end
|
end
|
||||||
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
|
||||||
end
|
end
|
||||||
return nothing
|
return nothing
|
||||||
|
|||||||
@@ -446,7 +446,7 @@ function neuroplasticity(synapticConnectionNumber,
|
|||||||
projection = ones(i1,i2,i3)
|
projection = ones(i1,i2,i3)
|
||||||
zitMask = zitMask .* projection # (row, col, n)
|
zitMask = zitMask .* projection # (row, col, n)
|
||||||
totalNewConn = sum(isequal.(wRec, -1.0), dims=(1,2)) # count new conn mark (-1.0), (1, 1, 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
|
# clear -1.0 marker
|
||||||
GeneralUtils.replace_elements!(wRec, -1.0, synapticInactivityCounter, -0.99)
|
GeneralUtils.replace_elements!(wRec, -1.0, synapticInactivityCounter, -0.99)
|
||||||
|
|||||||
Reference in New Issue
Block a user