Added network backpropagation, only works for last layer for now
This commit is contained in:
parent
922321e9cb
commit
8969d5ba2e
16
network.h
16
network.h
@ -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);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user