jacobian

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

commit d14f074a4193fcde119fba02eb782462e114a8d9
parent 1357b14e0277ccc20d9398b96088a75db1a6a8cf
Author: David Freifeld <freifeld.david@gmail.com>
Date:   Thu, 25 Jun 2020 12:05:05 -0700

All layers now updated: training has decaying accuracy

Diffstat:
Mbpnn.cpp | 17++++++++---------
Mexample.cpp | 4++--
2 files changed, 10 insertions(+), 11 deletions(-)

diff --git a/bpnn.cpp b/bpnn.cpp @@ -167,19 +167,18 @@ void Network::backpropagate() deltas.push_back((*layers[length-2].contents).transpose() * gradients[0]); int counter = 1; for (int i = length-2; i >= 1; i--) { - gradients.push_back((gradients[counter-1] * layers[i].weights->transpose())); - // std::cout << gradients[counter] << "\n" << *layers[i].dZ << "\n?\n\n"; - deltas.push_back((gradients[counter].cwiseProduct(*layers[i].dZ))); - // printf("Test?\n"); + gradients.push_back((gradients[counter-1] * layers[i].weights->transpose()).cwiseProduct(*layers[i].dZ)); + //std::cout << gradients[counter] << "\n" << layers[i-1].contents->transpose() << " " << counter << "\n?\n\n"; + deltas.push_back(layers[i-1].contents->transpose() * gradients[counter]); counter++; } - for (int i = 0; i < gradients.size(); i++) { + for (int i = 0; i < gradients.size()-1; i++) { Eigen::MatrixXd gradient = gradients[i]; // printf("Test2?\n"); - std::cout << "Batch sz: " << batch_size << "\n"; - std::cout << "Comparing " << length-3-i << " " <<length-2-i << " " << i << "\n"; - std::cout << deltas[i] << "DELTABOVE\n\n" << layers[length-2-i].contents->transpose() << "X_T\n\n" << *layers[length-2-i].weights << "WEIGHT2\n\n"; - *layers[length-2-i].weights -= learning_rate * (layers[length-2-i].contents->transpose()*deltas[i]); + // std::cout << "Batch sz: " << batch_size << "\n"; + //std::cout << "Comparing " << length-3-i << " " <<length-2-i << " " << i << "\n"; + //std::cout << deltas[i] << "DELTABOVE\n\n" << layers[length-2-i].contents->transpose() << "X_T\n\n" << *layers[length-2-i].weights << "WEIGHT2\n\n" << gradients[i] << "GRAD\n\n"; + *layers[length-2-i].weights -= learning_rate * deltas[i]; // printf("Test2.5?\n"); //std::cout << deltas[i] << "\n\n" << *layers[length-2-i].bias << "(layer "<< length-2-i << " cuz " << length << " - 2 - " << i << ")\n"; // *layers[length-2-i].bias -= learning_rate * (deltas[i]); diff --git a/example.cpp b/example.cpp @@ -3,13 +3,13 @@ int main() { - Network net ("./extra.txt", 4, 3, 1, 2, 10, 1); + Network net ("./extra.txt", 4, 1, 1, 5, 10, 5); net.set_activation(0, "linear"); net.set_activation(1, "sigmoid"); net.set_activation(2, "sigmoid"); net.set_activation(3, "resig"); // net.list_net(); - net.train(1); + net.train(50); // net.list_net(); //char line[1024]; //net.stream->getline(line, 1024);