| 120 | } |
| 121 | |
| 122 | vector<array> forward_propagate(const array &input) { |
| 123 | // Get activations at each layer |
| 124 | vector<array> signal(num_total); |
| 125 | signal[0] = input; |
| 126 | |
| 127 | for (int i = 0; i < num_total - 1; i++) { |
| 128 | array in = add_bias(signal[i]); |
| 129 | array out = matmul(in, weights[i]); |
| 130 | signal[i + 1] = sigmoid(out); |
| 131 | } |
| 132 | |
| 133 | return signal; |
| 134 | } |
| 135 | |
| 136 | void back_propagate(const vector<array> signal, const array &target, |
| 137 | const double &alpha) { |