dev
This commit is contained in:
@@ -282,7 +282,7 @@ function lifForward( zit,
|
||||
refractoryCounter[i1,i2,i3,i4] -= 1
|
||||
recSignal[i1,i2,i3,i4] = 0
|
||||
zt[i1,i2,i3,i4] = 0
|
||||
vt[i1,i2,i3,i4] = alpha[i1,i2,i3,i4] * vt[i1,i2,i3,i4]
|
||||
vt[i1,i2,i3,i4] = (1 - alpha[i1,i2,i3,i4]) * vt[i1,i2,i3,i4]
|
||||
phi[i1,i2,i3,i4] = 0
|
||||
|
||||
# compute epsilonRec
|
||||
@@ -299,7 +299,7 @@ function lifForward( zit,
|
||||
zt[i1,i2,i3,i4] = 1
|
||||
refractoryCounter[i1,i2,i3,i4] = refractoryDuration[i1,i2,i3,i4]
|
||||
firingCounter[i1,i2,i3,i4] += 1
|
||||
vt[i1,i2,i3,i4] = vRest[i1,i2,i3,i4]
|
||||
# vt[i1,i2,i3,i4] = vRest[i1,i2,i3,i4]
|
||||
|
||||
# reset counter if neuron fires
|
||||
neuronInactivityCounter[i1,i2,i3,i4] = 0
|
||||
@@ -320,7 +320,7 @@ function lifForward( zit,
|
||||
synapticActivityCounter[i1,i2,i3,i4] += zit[i1,i2,i3,i4] * !iszero(wRec[i1,i2,i3,i4])
|
||||
|
||||
# voltage regulator
|
||||
wRecChange[i1,i2,i3,i4] = -0.01*0.0001 * (vt[i1,i2,i3,i4] - vth[i1,i2,i3,i4]) *
|
||||
wRecChange[i1,i2,i3,i4] = -0.001 * (vt[i1,i2,i3,i4] - vth[i1,i2,i3,i4]) *
|
||||
zit[i1,i2,i3,i4]
|
||||
|
||||
# negative value is counting mode, -0.1 < -0.1 won't work on GPU
|
||||
@@ -476,7 +476,7 @@ function alifForward( zit,
|
||||
refractoryCounter[i1,i2,i3,i4] -= 1
|
||||
recSignal[i1,i2,i3,i4] = 0
|
||||
zt[i1,i2,i3,i4] = 0
|
||||
vt[i1,i2,i3,i4] = alpha[i1,i2,i3,i4] * vt[i1,i2,i3,i4]
|
||||
vt[i1,i2,i3,i4] = (1 - alpha[i1,i2,i3,i4]) * vt[i1,i2,i3,i4]
|
||||
phi[i1,i2,i3,i4] = 0
|
||||
a[i1,i2,i3,i4] = rho[i1,i2,i3,i4] * a[i1,i2,i3,i4]
|
||||
|
||||
@@ -504,7 +504,7 @@ function alifForward( zit,
|
||||
zt[i1,i2,i3,i4] = 1
|
||||
refractoryCounter[i1,i2,i3,i4] = refractoryDuration[i1,i2,i3,i4]
|
||||
firingCounter[i1,i2,i3,i4] += 1
|
||||
vt[i1,i2,i3,i4] = vRest[i1,i2,i3,i4]
|
||||
# vt[i1,i2,i3,i4] = vRest[i1,i2,i3,i4]
|
||||
a[i1,i2,i3,i4] = (rho[i1,i2,i3,i4] * a[i1,i2,i3,i4]) + 1
|
||||
neuronInactivityCounter[i1,i2,i3,i4] = 0
|
||||
else
|
||||
@@ -528,7 +528,7 @@ function alifForward( zit,
|
||||
synapticActivityCounter[i1,i2,i3,i4] += zit[i1,i2,i3,i4] * !iszero(wRec[i1,i2,i3,i4])
|
||||
|
||||
# voltage regulator
|
||||
wRecChange[i1,i2,i3,i4] = -0.01*0.0001 * (vt[i1,i2,i3,i4] - avth[i1,i2,i3,i4]) *
|
||||
wRecChange[i1,i2,i3,i4] = -0.001 * (vt[i1,i2,i3,i4] - avth[i1,i2,i3,i4]) *
|
||||
zit[i1,i2,i3,i4]
|
||||
|
||||
# negative value is counting mode, -0.1 < -0.1 won't work on GPU
|
||||
@@ -640,7 +640,7 @@ function onForward( zit,
|
||||
refractoryCounter[i1,i2,i3,i4] -= 1
|
||||
recSignal[i1,i2,i3,i4] = 0
|
||||
zt[i1,i2,i3,i4] = 0
|
||||
vt[i1,i2,i3,i4] = alpha[i1,i2,i3,i4] * vt[i1,i2,i3,i4]
|
||||
vt[i1,i2,i3,i4] = (1 - alpha[i1,i2,i3,i4]) * vt[i1,i2,i3,i4]
|
||||
phi[i1,i2,i3,i4] = 0
|
||||
|
||||
# compute epsilonRec
|
||||
@@ -655,7 +655,7 @@ function onForward( zit,
|
||||
zt[i1,i2,i3,i4] = 1
|
||||
refractoryCounter[i1,i2,i3,i4] = refractoryDuration[i1,i2,i3,i4]
|
||||
firingCounter[i1,i2,i3,i4] += 1
|
||||
vt[i1,i2,i3,i4] = vRest[i1,i2,i3,i4]
|
||||
vt[i1,i2,i3,i4] = (1 - alpha[i1,i2,i3,i4]) * vt[i1,i2,i3,i4]
|
||||
else
|
||||
zt[i1,i2,i3,i4] = 0
|
||||
end
|
||||
|
||||
10
src/learn.jl
10
src/learn.jl
@@ -106,8 +106,9 @@ function lifComputeParamsChange!( timeStep::CuArray,
|
||||
wRecChange .+= (eta .* nError .* eRec)
|
||||
|
||||
# frequency regulator
|
||||
freqError = (firingTargetFrequency - (firingCounter./timeStep)) ./ timeStep
|
||||
freqWRecChange = -0.1 .* freqError .* eta .* eRec
|
||||
targetFiringCount = firingTargetFrequency .* timeStep
|
||||
freqError = (firingCounter .- targetFiringCount) ./ timeStep
|
||||
freqWRecChange = -1 .* freqError .* eta .* eRec
|
||||
wRecChange .+= freqWRecChange
|
||||
|
||||
# reset epsilonRec
|
||||
@@ -158,8 +159,9 @@ function alifComputeParamsChange!( timeStep::CuArray,
|
||||
wRecChange .+= (eta .* nError .* eRec)
|
||||
|
||||
# frequency regulator
|
||||
freqError = (firingTargetFrequency - (firingCounter./timeStep)) ./ timeStep
|
||||
freqWRecChange = -0.1 .* freqError .* eta .* eRec
|
||||
targetFiringCount = firingTargetFrequency .* timeStep
|
||||
freqError = (firingCounter .- targetFiringCount) ./ timeStep
|
||||
freqWRecChange = -1 .* freqError .* eta .* eRec
|
||||
wRecChange .+= freqWRecChange
|
||||
# wRecChange .+= 0.01 .* ((firingTargetFrequency - (firingCounter./timeStep)) ./ timeStep) .*
|
||||
# eta .* eRec
|
||||
|
||||
12
src/type.jl
12
src/type.jl
@@ -216,8 +216,8 @@ function kfn_1(params::Dict; device=cpu)
|
||||
kfn.lif_refractoryCounter = (similar(kfn.lif_wRec) .= 0)
|
||||
kfn.lif_refractoryDuration = (similar(kfn.lif_wRec) .= 3)
|
||||
kfn.lif_delta = 1.0
|
||||
kfn.lif_tau_m = 20.0
|
||||
kfn.lif_alpha = (similar(kfn.lif_wRec) .= (exp(-kfn.lif_delta / kfn.lif_tau_m)))
|
||||
kfn.lif_tau_m = 100.0
|
||||
kfn.lif_alpha = (similar(kfn.lif_wRec) .= (exp(-kfn.lif_delta / kfn.lif_tau_m)))
|
||||
kfn.lif_phi = (similar(kfn.lif_wRec) .= 0)
|
||||
kfn.lif_epsilonRec = (similar(kfn.lif_wRec) .= 0)
|
||||
kfn.lif_eRec = (similar(kfn.lif_wRec) .= 0)
|
||||
@@ -227,7 +227,7 @@ function kfn_1(params::Dict; device=cpu)
|
||||
kfn.lif_error = (similar(kfn.lif_wRec) .= 0)
|
||||
|
||||
kfn.lif_firingCounter = (similar(kfn.lif_wRec) .= 0)
|
||||
kfn.lif_firingTargetFrequency = (similar(kfn.lif_wRec) .= 10)
|
||||
kfn.lif_firingTargetFrequency = (similar(kfn.lif_wRec) .= 0.1)
|
||||
kfn.lif_neuronInactivityCounter = (similar(kfn.lif_wRec) .= 0)
|
||||
|
||||
# count subscribed synapse activity, just like epsilonRec but without decay.
|
||||
@@ -265,7 +265,7 @@ function kfn_1(params::Dict; device=cpu)
|
||||
kfn.alif_refractoryCounter = (similar(kfn.alif_wRec) .= 0)
|
||||
kfn.alif_refractoryDuration = (similar(kfn.alif_wRec) .= 3)
|
||||
kfn.alif_delta = 1.0
|
||||
kfn.alif_tau_m = 20.0
|
||||
kfn.alif_tau_m = 100.0
|
||||
kfn.alif_alpha = (similar(kfn.alif_wRec) .= (exp(-kfn.alif_delta / kfn.alif_tau_m)))
|
||||
kfn.alif_phi = (similar(kfn.alif_wRec) .= 0)
|
||||
kfn.alif_epsilonRec = (similar(kfn.alif_wRec) .= 0)
|
||||
@@ -276,7 +276,7 @@ function kfn_1(params::Dict; device=cpu)
|
||||
kfn.alif_error = (similar(kfn.alif_wRec) .= 0)
|
||||
|
||||
kfn.alif_firingCounter = (similar(kfn.alif_wRec) .= 0)
|
||||
kfn.alif_firingTargetFrequency = (similar(kfn.alif_wRec) .= 10)
|
||||
kfn.alif_firingTargetFrequency = (similar(kfn.alif_wRec) .= 0.1)
|
||||
kfn.alif_neuronInactivityCounter = (similar(kfn.alif_wRec) .= 0)
|
||||
kfn.alif_synapseReconnectDelay = (similar(kfn.alif_wRec) .= -0.1) # -0.1 for non-sub conn
|
||||
kfn.alif_synapticActivityCounter = (similar(kfn.alif_wRec) .= 0)
|
||||
@@ -338,7 +338,7 @@ function kfn_1(params::Dict; device=cpu)
|
||||
kfn.on_refractoryCounter = (similar(kfn.on_wOut) .= 0)
|
||||
kfn.on_refractoryDuration = (similar(kfn.on_wOut) .= 0)
|
||||
kfn.on_delta = 1.0
|
||||
kfn.on_tau_m = 20.0
|
||||
kfn.on_tau_m = 100.0
|
||||
kfn.on_alpha = (similar(kfn.on_wOut) .= (exp(-kfn.on_delta / kfn.on_tau_m)))
|
||||
kfn.on_phi = (similar(kfn.on_wOut) .= 0)
|
||||
kfn.on_epsilonRec = (similar(kfn.on_wOut) .= 0)
|
||||
|
||||
Reference in New Issue
Block a user