Files
Ironpen/src/Ironpen.jl
2023-05-22 14:11:06 +07:00

102 lines
3.0 KiB
Julia
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
module Ironpen
export kfn_1, synapticConnStrength!
""" Order by dependencies of each file. The 1st included file must not depend on any other
files and each file can only depend on the file included before it.
"""
include("types.jl")
using .types # bring model into this module namespace (this module is a parent module)
include("snn_utils.jl")
using .snn_utils
# include("Save_and_load.jl")
# using .Save_and_load
# include("DB_services.jl")
# using .DB_services
include("forward.jl")
using .forward
include("learn.jl")
using .learn
include("readout.jl")
using .readout
include("interface.jl")
using .interface
#------------------------------------------------------------------------------------------------100
"""
Todo:
[] using RL to control learning signal
[] consider using Dates.now() instead of timestamp because time_stamp may overflow
[*1] training should include adjusting α, neuron membrane potential decay factor
which defined by neuron.tau_m formula in type.jl
[DONE] each knowledgeFn should have its own noise generater
[DONE] where to put pseudo derivative (n.phi)
[DONE] add excitatory, inhabitory to neuron
[DONE] implement "start learning", reset learning and "learning", "end_learning and
"inference"
[DONE] output neuron connect to random multiple compute neurons and overall have
the same structure as lif
[DONE] time-based learning method based on new error formula
(use output vt compared to vth instead of late time)
if output neuron not activate when it should, use output neuron's
(vth - vt)*100/vth as error
if output neuron activates when it should NOT, use output neuron's
(vt*100)/vth as error
[DONE] use LinearAlgebra.normalize!(vector, 1) to adjust weight after weight merge
[DONE] reset_epsilonRec after ΔwRecChange is calculated
[DONE] synaptic connection strength concept. use sigmoid, turn connection offline
[DONE] wRec should not normalized whole. it should be local 5 conn normalized.
[DONE] neuroplasticity() i.e. change connection
[DONE] add multi threads
Change from version: v06_36a
-
All features
- multidispatch + for loop as main compute method
- hard connection constrain yes
- normalize output yes
- allow -w_rec yes
- voltage drop when neuron fires voltage drop equals to vth
- v_t decay during refractory
duration exponantial decay
- input data population encoding, each pixel data =>
population encoding, ralative between pixel data
- compute neuron weight init rand()
- output neuron weight init randn()
"""
end # module end