-
Notifications
You must be signed in to change notification settings - Fork 0
/
neural_net.h
67 lines (49 loc) · 1.77 KB
/
neural_net.h
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
56
57
58
59
60
61
62
63
64
65
66
67
#ifndef __neural_net__
#define __neural_net__
class computationalModel;
class Data;
class layers;
class weights;
class orderedData;
class activityLayers;
class architecture;
class computationalNode;
class NeuralNet
{
public:
int Nlayers;
int Nweights;
bool testMode; //0: training mode; 1 - testMode;
bool primalWeightOwner;
bool architectureBased = false;
architecture * arch;
layers* layersData;
layers* deltas;
weights* weightsData;
weights* gradient;
activityLayers* layersActivity;
computationalModel* computation;
NeuralNet();
void SetInputShape(int dim1, int dim2 = -1, int dim3 = -1);
void Add(computationalNode * node);
void ForwardPass(orderedData* input);
void BackwardPass(int trueClass, int input_len);
void ForwardBackwardPass(orderedData* input, int trueClass);
void Initiate();
void Initiate(NeuralNet * NN);
void InitiateFromArchitecture();
void InitiateFromArchitecture(NeuralNet * NN);
void SetRandomWeights(float bound);
void CalculateGradient(Data* inputData);
void CalculateGradientFunctionValue(Data* inputData, float& functionVal);
void CalculateErrorAndAccuracy(Data* inputData, float &error, float &accuracy);
void CalculateSubErrorAndAccuracy(Data* inputData, float &error, int &correct);
float CalculateAccuracy(Data* inputData);
void PrintProbabilities();
void SwitchToTrainingMode();
void SwitchToTestMode();
void UpdateBalancedDropParameters(float alpha_, float pDrop_, float pNotDrop_);
bool CheckCompatibility(Data * data);
~NeuralNet();
};
#endif // __neural_net__