Added network backpropagation, only works for last layer for now

This commit is contained in:
LeLeLeLeto 2024-12-31 17:22:36 +01:00
parent 922321e9cb
commit 8969d5ba2e

View File

@ -15,11 +15,27 @@ class Network {
inline void Forward();
inline void BackPropagate(Matrix);
// Constructors
// Input size, Array of hidden sizes, Output size
Network(int, std::vector<int>, int);
};
void Network::BackPropagate(Matrix target){
// Calculate derivative of loss in respect to A (dca) for output layer
// loss = (A - Y)^2
// derivative = 2(A - Y)
Matrix loss = this->output_layer.activated_output.Substract(&target);
loss = loss.Hadamard(&loss);
// loss.Print("Loss");
Matrix dca = this->output_layer.activated_output.Substract(&target);
dca = dca.Multiply(2.0F);
// dca.Print("DCA");
this->output_layer.BackPropagate(this->hidden_layers[this->hidden_layers.size() - 1].activated_output, dca, &Layer::SigmoidPrime);
}
Network::Network(int input_size, std::vector<int> hidden_sizes, int output_size){
this->input = Matrix(input_size, 1);