| 75 | } |
| 76 | |
| 77 | vector<array> ann::forward_propagate(const array &input) { |
| 78 | // Get activations at each layer |
| 79 | vector<array> signal(num_layers); |
| 80 | signal[0] = input; |
| 81 | |
| 82 | for (int i = 0; i < num_layers - 1; i++) { |
| 83 | array in = add_bias(signal[i]); |
| 84 | array out = matmul(in, weights[i]); |
| 85 | signal[i + 1] = sigmoid(out); |
| 86 | } |
| 87 | |
| 88 | return signal; |
| 89 | } |
| 90 | |
| 91 | void ann::back_propagate(const vector<array> signal, const array &target, |
| 92 | const double &alpha) { |