building forwared()

This commit is contained in:
ton
2023-07-14 13:59:23 +07:00
parent fc676d1ccd
commit 2e34679f73
5 changed files with 191 additions and 135 deletions

View File

@@ -2,10 +2,68 @@ module forward
# export
# using
using GeneralUtils
using ..type, ..snnUtil
#------------------------------------------------------------------------------------------------100
# kfn forward
function (kfn::kfn_1)(input::AbstractArray)
kfn.timeStep .+= 1
#TODO time step forward
if kfn.learningStage == [1]
# reset learning params
end
println(">>> input ", size(input))
println(">>> z_i_t1 ", size(kfn.z_i_t1))
# pass input_data into input neuron.
GeneralUtils.cartesianAssign!(kfn.z_i_t1, input)
println(">>> z_i_t1 ", size(kfn.z_i_t1))
println(">>> lif_recSignal ", size(kfn.lif_recSignal))
println(">>> lif_w ", size(kfn.lif_w))
println(">>> lif_refractoryActive ", size(kfn.lif_refractoryActive))
println(">>> lif_alpha ", size(kfn.lif_alpha))
println(">>> lif_vt0 ", size(kfn.lif_vt0))
println(">>> lif_vt0 sum ", sum(kfn.lif_vt0))
# check active/inactive neurons
refractoryStatus!(kfn.lif_refractoryCounter, kfn.lif_refractoryActive, kfn.lif_refractoryInactive)
refractoryStatus!(kfn.alif_refractoryCounter, kfn.alif_refractoryActive, kfn.alif_refractoryInactive)
# LIF forward active neurons
kfn.lif_recSignal .= GeneralUtils.sumAlongDim3(
GeneralUtils.matMul_3Dto4D_batchwise(kfn.z_i_t1, kfn.lif_refractoryActive .* kfn.lif_w))
kfn.lif_vt1 = (kfn.lif_alpha .* kfn.lif_vt0) .+ kfn.lif_recSignal
# for (i, v) in enumerate(kfn.lif_vt1)
# if v <
# LIF forward inactive neurons
# GeneralUtils.batchMatEleMul(kfn.z_i_t1, kfn.alif_w, resultStorage=kfn.alif_recSignal)
error("debug end kfn forward")
end