ReDim Network.Layers(I).Neurons(j).Sinapses(Network.Layers(I).Neurons(j).SinapseCount) As tSinapse 'Redim the Sinapse var
For k = 1 To ArrayOFlyers(I - 1)
DoEvents
Network.Layers(I).Neurons(j).Sinapses(k).Weight = GetRand 'Set the weight of each Sinapse
Next k
End If
Next j
Next I
CreateNet = 1
''reexre
ReDim fast_N_toLayer(GetTotalNofSinaps)
ReDim fast_N_toNeuron(GetTotalNofSinaps)
ReDim fast_S_toLayer(GetTotalNofSinaps)
ReDim fast_S_toNeuron(GetTotalNofSinaps)
ReDim fast_S_toSinap(GetTotalNofSinaps)
MY_InitFAST
''reexre
End Function
Function RUN(ArrayOfInputs As Variant) As Variant 'It returns the output inf form of array
Dim I, j, k As Integer
If UBound(ArrayOfInputs) <> Network.Layers(1).NeuronCount Then
RUN = 0
Exit Function
End If
For I = 1 To Network.LayerCount
DoEvents
For j = 1 To Network.Layers(I).NeuronCount
DoEvents
If I = 1 Then
Network.Layers(I).Neurons(j).Value = ArrayOfInputs(j) 'Set the value of input layer
Else
Network.Layers(I).Neurons(j).Value = 0 'First set the value to zero
For k = 1 To Network.Layers(I - 1).NeuronCount
'DoEvents
Network.Layers(I).Neurons(j).Value = Network.Layers(I).Neurons(j).Value + Network.Layers(I - 1).Neurons(k).Value * Network.Layers(I).Neurons(j).Sinapses(k).Weight 'Calculating the value
Next k
Network.Layers(I).Neurons(j).Value = Activation(Network.Layers(I).Neurons(j).Value + Network.Layers(I).Neurons(j).Bias) 'Calculating the real value of neuron
End If
Next j
Next I
ReDim OutputResult(Network.Layers(Network.LayerCount).NeuronCount) As Double
For I = 1 To (Network.Layers(Network.LayerCount).NeuronCount)
DoEvents
OutputResult(I) = (Network.Layers(Network.LayerCount).Neurons(I).Value) 'The array of output result
Next I
RUN = OutputResult
End Function
Function Train(inputdata As Variant, outputdata As Variant) As Integer '0=unsuccessful and 1 = sucessful
Dim I, j, k As Integer
If UBound(inputdata) <> Network.Layers(1).NeuronCount Then 'Check if correct amount of input is given
Train = 0
Exit Function
End If
If UBound(outputdata) <> Network.Layers(Network.LayerCount).NeuronCount Then 'Check if correct amount of output is given
Train = 0
Exit Function
End If
Call RUN(inputdata) 'Calculate values of all neurons and set the input
'Calculate delta's
For I = 1 To Network.Layers(Network.LayerCount).NeuronCount