file Layer cpp include Layer Конструктор nN число нейронов слое nI чис

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
//file Layer.cpp
#include "Layer.h"
//Конструктор
//nN - число нейронов в слое
//nI - число входов у каждого нейрона
Layer::Layer(int nN, int nI, char *LName)
{
LyaerName = LName;
nNeuron = nN;
nIputNeuron = nI;
OutLayer = new float[nNeuron];
for(int i=0; i<nNeuron; i++)
NeuronLayer.push_back(Neuron(nI));
};
//Метод для подачи данных на вх слоя.
void Layer::InpLayerData(float *InLayerDat)
{
int k=0;
for(int i=0; i<nNeuron; i++)
{
if(k>nNeuron)
k = 0;
for(int j=0; j<nIputNeuron; j++)
{
NeuronLayer[i].InpDataNeuron[j] = InLayerDat[k];
//std::cout << "NeuronLayer[" << i << "].InpDataNeuron[" << j << "] = InLayerDat[" << k << "] = " << InLayerDat[k] << std::endl;
k=k+1;
}
}
};
//Метод формирующий массв выходных значений
void Layer::OutNeuronLayer(bool RndYesNo)
{
for(int i=0; i<nNeuron; i++)
{
if(RndYesNo)
NeuronLayer[i].SetRndSinaps();
OutLayer[i] = NeuronLayer[i].OutDataNeuron();
//std::cout << "OutLayer[" << i << "] = NeuronLayer[" << i << "].OutDataNeuron() = " << NeuronLayer[i].OutDataNeuron() << std::endl;
}
};
//Метод для установка весов синапсов нейронов в слое.
void Layer::SetLayerVesSinaps(float *ArrVesSinaps)
{
for(int i=0; i<nNeuron; i++)
{
for(int j=0; j<nIputNeuron; j++)
{
NeuronLayer[i].VesSinapsNeuron[j] = ArrVesSinaps[i*nIputNeuron +j];
//std::cout << "NeuronLayer[" << i << "].VesSinapsNeuron[" << j << "] = ArrVesSinaps[" << i*nIputNeuron +j << "] = " << ArrVesSinaps[i*nIputNeuron +j] << std::endl;
}
}
}