bug fix
This commit is contained in:
22
src/learn.jl
22
src/learn.jl
@@ -42,14 +42,14 @@ function learn!(kfn::kfn_1, correctAnswer::AbstractVector)
|
||||
# wrap up learning session
|
||||
if kfn.learningStage == "end_learning"
|
||||
# Threads.@threads for n in kfn.neuronsArray
|
||||
for n in kfn.neuronsArray
|
||||
for n in kfn.neuronsArray
|
||||
wSign_0 = sign.(n.wRec) # original sign
|
||||
n.wRec += n.wRecChange # merge wRecChange into wRec
|
||||
wSign = sign.(n.wRec) # check for fliped sign, 1 indicates non-fliped sign
|
||||
nonFlipedSign = isequal.(n.subExInType, wSign) # 1 not fliped, 0 fliped
|
||||
LinearAlgebra.normalize!(n.wRec, 1)
|
||||
n.wRec .*= nonFlipedSign # set weight that fliped sign to 0 for random new connection
|
||||
wSign_1 = sign.(n.wRec) # check for fliped sign, 1 indicates non-fliped sign
|
||||
nonFlipedSign = isequal.(wSign_0, wSign_1) # 1 not fliped, 0 fliped
|
||||
# normalize wRec peak to prevent input signal overwhelming neuron
|
||||
normalizePeak!(n.wRec, 2)
|
||||
n.wRec .*= nonFlipedSign # set weight that fliped sign to 0 for random new connection
|
||||
|
||||
|
||||
synapticConnStrength!(n)
|
||||
@@ -58,12 +58,12 @@ function learn!(kfn::kfn_1, correctAnswer::AbstractVector)
|
||||
end
|
||||
|
||||
for n in kfn.outputNeuronsArray # merge wRecChange into wRec
|
||||
wSign_0 = sign.(n.wRec) # original sign
|
||||
n.wRec += n.wRecChange
|
||||
wSign = sign.(n.wRec) # check for fliped sign, 1 indicates non-fliped sign
|
||||
nonFlipedSign = isequal.(n.subExInType, wSign) # 1 not fliped, 0 fliped
|
||||
LinearAlgebra.normalize!(n.wRec, 1)
|
||||
n.wRec .*= nonFlipedSign # set weight that fliped sign to 0 for random new connection
|
||||
wSign_1 = sign.(n.wRec) # check for fliped sign, 1 indicates non-fliped sign
|
||||
nonFlipedSign = isequal.(wSign_0, wSign_1) # 1 not fliped, 0 fliped
|
||||
normalizePeak!(n.wRec, 2)
|
||||
n.wRec .*= nonFlipedSign # set weight that fliped sign to 0 for random new connection
|
||||
|
||||
synapticConnStrength!(n)
|
||||
#TODO neuroplasticity
|
||||
@@ -91,7 +91,6 @@ end
|
||||
"""
|
||||
function learn!(n::lifNeuron, error::Number)
|
||||
n.eRec = n.phi * n.epsilonRec
|
||||
|
||||
ΔwRecChange = n.eta * error * n.eRec
|
||||
n.wRecChange .+= ΔwRecChange
|
||||
reset_epsilonRec!(n)
|
||||
@@ -103,7 +102,6 @@ function learn!(n::alifNeuron, error::Number)
|
||||
n.eRec_v = n.phi * n.epsilonRec
|
||||
n.eRec_a = -n.phi * n.beta * n.epsilonRecA
|
||||
n.eRec = n.eRec_v + n.eRec_a
|
||||
|
||||
ΔwRecChange = n.eta * error * n.eRec
|
||||
n.wRecChange .+= ΔwRecChange
|
||||
reset_epsilonRec!(n)
|
||||
@@ -114,7 +112,7 @@ end
|
||||
"""
|
||||
function learn!(n::linearNeuron, error::Number)
|
||||
n.eRec = n.phi * n.epsilonRec
|
||||
|
||||
|
||||
ΔwRecChange = n.eta * error * n.eRec
|
||||
n.wRecChange .+= ΔwRecChange
|
||||
reset_epsilonRec!(n)
|
||||
|
||||
Reference in New Issue
Block a user