add alif learn
This commit is contained in:
20
src/type.jl
20
src/type.jl
@@ -197,7 +197,8 @@ function kfn_1(params::Dict; device=cpu)
|
||||
|
||||
# subscription
|
||||
synapticConnectionPercent = kfn.params[:computeNeuron][:lif][:params][:synapticConnectionPercent]
|
||||
kfn.lif_synapticConnectionNumber, w = wRec(row, col, lif_n, synapticConnectionPercent)
|
||||
kfn.lif_synapticConnectionNumber = Int(floor(row*col * synapticConnectionPercent/100))
|
||||
w = wRec(row, col, lif_n, kfn.lif_synapticConnectionNumber)
|
||||
|
||||
# project 3D w into 4D kfn.lif_wRec (row, col, n, batch)
|
||||
kfn.lif_wRec = reshape(w, (row, col, lif_n, 1)) .* ones(row, col, lif_n, batch) |> device
|
||||
@@ -225,7 +226,8 @@ function kfn_1(params::Dict; device=cpu)
|
||||
kfn.lif_neuronInactivityCounter = (similar(kfn.lif_wRec) .= 0)
|
||||
kfn.lif_synapticInactivityCounter = Array(similar(kfn.lif_wRec) .= -0.99) # -9 for non-sub conn
|
||||
mask = Array((!iszero).(kfn.lif_wRec))
|
||||
GeneralUtils.replace_elements!(mask, 1, kfn.lif_synapticInactivityCounter, 0) # initial value subscribed conn
|
||||
# initial value subscribed conn, synapticInactivityCounter range -10000 to +10000
|
||||
GeneralUtils.replace_elements!(mask, 1, kfn.lif_synapticInactivityCounter, 0)
|
||||
kfn.lif_synapticInactivityCounter = kfn.lif_synapticInactivityCounter |> device
|
||||
|
||||
kfn.lif_arrayProjection4d = (similar(kfn.lif_wRec) .= 1)
|
||||
@@ -244,7 +246,8 @@ function kfn_1(params::Dict; device=cpu)
|
||||
|
||||
# subscription
|
||||
synapticConnectionPercent = kfn.params[:computeNeuron][:alif][:params][:synapticConnectionPercent]
|
||||
kfn.alif_synapticConnectionNumber, w = wRec(row, col, alif_n, synapticConnectionPercent)
|
||||
kfn.alif_synapticConnectionNumber = Int(floor(row*col * synapticConnectionPercent/100))
|
||||
w = wRec(row, col, alif_n, kfn.alif_synapticConnectionNumber)
|
||||
|
||||
# project 3D w into 4D kfn.alif_wRec
|
||||
kfn.alif_wRec = reshape(w, (row, col, alif_n, 1)) .* ones(row, col, alif_n, batch) |> device
|
||||
@@ -272,7 +275,8 @@ function kfn_1(params::Dict; device=cpu)
|
||||
kfn.alif_neuronInactivityCounter = (similar(kfn.alif_wRec) .= 0)
|
||||
kfn.alif_synapticInactivityCounter = Array(similar(kfn.alif_wRec) .= -0.99) # -9 for non-sub conn
|
||||
mask = Array((!iszero).(kfn.alif_wRec))
|
||||
GeneralUtils.replace_elements!(mask, 1, kfn.alif_synapticInactivityCounter, 0) # initial value subscribed conn
|
||||
# initial value subscribed conn, synapticInactivityCounter range -10000 to +10000
|
||||
GeneralUtils.replace_elements!(mask, 1, kfn.alif_synapticInactivityCounter, 0)
|
||||
kfn.alif_synapticInactivityCounter = kfn.alif_synapticInactivityCounter |> device
|
||||
|
||||
kfn.alif_arrayProjection4d = (similar(kfn.alif_wRec) .= 1)
|
||||
@@ -359,10 +363,10 @@ function kfn_1(params::Dict; device=cpu)
|
||||
return kfn
|
||||
end
|
||||
|
||||
function wRec(row, col, n, synapticConnectionPercent)
|
||||
function wRec(row, col, n, synapticConnectionNumber)
|
||||
# subscription
|
||||
w = zeros(row, col, n)
|
||||
synapticConnectionNumber = Int(floor(row*col * synapticConnectionPercent/100))
|
||||
|
||||
for slice in eachslice(w, dims=3)
|
||||
pool = shuffle!([1:row*col...])[1:synapticConnectionNumber]
|
||||
for i in pool
|
||||
@@ -375,7 +379,7 @@ function wRec(row, col, n, synapticConnectionPercent)
|
||||
should_be_avg_weight = 1 / (0.1 * synapticConnectionNumber)
|
||||
w = w .* (should_be_avg_weight / maximum(w)) # adjust overall weight
|
||||
|
||||
return synapticConnectionNumber, w
|
||||
return w #(row, col, n)
|
||||
end
|
||||
|
||||
|
||||
@@ -421,8 +425,6 @@ end
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user