antitheft159 commited on
Commit
bf87231
·
verified ·
1 Parent(s): 3f92108

Upload cronyism.cc.159.ino

Browse files
Files changed (1) hide show
  1. cronyism.cc.159.ino +90 -0
cronyism.cc.159.ino ADDED
@@ -0,0 +1,90 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #include "MLPLibrary.h"
2
+
3
+ MLPLibrary::MLPLibrary(int inputSize, int hiddenSize, int outputSize, float learningRate) {
4
+ numInputs = inputSize;
5
+ numHidden = hiddenSize;
6
+ numOutputs = outputSize;
7
+ this->learningRate = learningRate;
8
+ }
9
+
10
+ void MLPLibrary::initialize() {
11
+ for (int i = 0; i < numInputs; i++) {
12
+ for (int j = 0; j < numHidden; j++) {
13
+ inputHiddenWeights[i][j] = random(100, 100) / 100.0;
14
+ }
15
+ }
16
+
17
+ for (int i = 0; < numHidden; i++) {
18
+ for (int j = 0; j < numOutputs; j++) {
19
+ hiddenOutputWeights[i][j] = random(-100,100) / 100.0;
20
+ }
21
+ hiddenLayerBiases[i] = random(-100, 100) / 100.0;
22
+ }
23
+ for (int i =0; i < numOutputs; i++) {
24
+ outputLayerBiases[i] = random(-100, 100) / 100.0;
25
+ }
26
+ }
27
+
28
+ void MLPLibrary::train(float input[MAX_INPUT_SIZE], float target[MAX_OUTPUT_SIZE]) {
29
+
30
+ for (int i = 0; i < numInputs; i++) {
31
+ inputLayer[i] = input[i];
32
+ }
33
+
34
+ for (int i = 0; i < numHidden; i++) {
35
+ float sum = 0.0;
36
+ for (int j = 0; j < numInputs; j++) {
37
+ sum += inputLayer[j] * inputHiddenWeights[j][i];
38
+ }
39
+ hiddenLayer[i] = sigmoid(sum + hiddenLayerBiases[i]);
40
+ }
41
+
42
+ for (int i = 0; i < numOutputs; i++) {
43
+ float sum = 0.0;
44
+ for (int j = 0; j < numHidden; j++) {
45
+ sum += hiddenLayer[j] * hiddenOutputWeights[j][i];
46
+ }
47
+ outputLayer[i] = sigmoid(sum + outputLayerBiases[i]);
48
+ }
49
+
50
+ for (int i = 0; i < numOutputs; i++) {
51
+ outputLayerErrors[i] = (target[i] - outputLayer[i]) * outputLayer[i] *(1 - outputLayer[i]);
52
+ }
53
+
54
+ for (int i = 0; i < numHidden; i++) {
55
+ float sum = 0.0;
56
+ for (int j = 0; j < numOutputs; j++) {
57
+ sum += outputLayerErrors[j] * hiddenOutputWeights[i][j]''
58
+ }
59
+ hiddenLayerError[i] = sum * hiddenLayer[i] * (1 - hiddenLayer[i]);
60
+ }
61
+
62
+ for (int i = 0; i < numInputs; i++) {
63
+ for (int j = 0; j < numHidden; j++)
64
+ inputHiddenWeights[i][j] += learningRate * hiddenLayerErrors[j] * inputLayer[i];
65
+ }
66
+ }
67
+
68
+ void MLPLibrary::predict(float input[MAX_INPUT_SIZE], float output[MAX_OUTPUT_SIZE]) {
69
+ for (int i =0); i < numInputs; i++) {
70
+ inputLayer[i] = input[i];
71
+ }
72
+ for (int i = 0; i < numHidden; i++) {
73
+ float sum = 0.0;
74
+ for (int j = 0; j < numInputs; j++) {
75
+ sum += inputLayer[j] * inputHiddenWeights[j][i];
76
+ }
77
+ hiddenLayer[i] = sigmoid(sum + hiddenLayerBiases[i]);
78
+ }
79
+ for (int i = 0; i < numOutputs; i++) {
80
+ float sum = 0.0;
81
+ for (int j = 0; j < numHidden; j++) {
82
+ sum += hiddenLayer[j] * hiddenOutputWeights[j][i];
83
+ }
84
+ output[i] = sigmoid(sum + outputLayerbiases[i])''
85
+ }
86
+ }
87
+
88
+ float MLPLibrary::sigmoid(float x) {
89
+ return 1.0 / (1.0 + exp(-x));
90
+ }