jacobian

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

commit 19f89fdb2cce128adc58d033419723cd7bda2640
parent b38355d1e1d981ec545b74f5fc90eea2934b9131
Author: David Freifeld <freifeld.david@gmail.com>
Date:   Fri, 12 Jun 2020 22:14:17 -0700

Inching towards backprop

Diffstat:
Mtest.cpp | 26+++++++++++++++++++++-----
1 file changed, 21 insertions(+), 5 deletions(-)

diff --git a/test.cpp b/test.cpp @@ -88,16 +88,18 @@ class Network { public: std::vector<Layer> layers; int length; + + int batch_sz; std::vector<int> labels; Network(char* path, int inputs, int hidden, int outputs, int neurons, int batch_sz); - void activate(Eigen::MatrixXd matrix); + Eigen::MatrixXd activate(Eigen::MatrixXd matrix); void feedforward(); void list_net(); float cost(); - float gradient(); + float gradient(int mode, int layer, int node); void backpropagate(); }; @@ -125,12 +127,15 @@ Network::Network(char* path, int inputs, int hidden, int outputs, int neurons, i } } -void Network::activate(Eigen::MatrixXd matrix) +Eigen::MatrixXd Network::activate(Eigen::MatrixXd matrix) { int nodes = matrix.cols(); for (int i = 0; i < (matrix.rows()*matrix.cols()); i++) { - // (matrix)((int)i / nodes, i%nodes) = + if ((matrix)((float)i / nodes, i%nodes) < 0) { + (matrix)((float)i / nodes, i%nodes) = 0; + } } + return matrix; } void Network::feedforward() @@ -140,7 +145,7 @@ void Network::feedforward() for (int j = 0; j < layers[i+1].contents->rows(); j++) { layers[i+1].contents->row(j) += *layers[i+1].bias; } - activate(*layers[i+1].contents); + *layers[i+1].contents = activate(*layers[i+1].contents); } } @@ -161,6 +166,17 @@ float Network::cost() return (1.0/layers[length-1].contents->rows()) * sum; } +float Network::gradient(int mode, int layer, int node) +{ + float N = batch_sz; + if (mode == 0) { + for (int i = 0; i < N; i++) { + // float x_i = + // if () + } + } +} + int main() { std::cout << "\n\n\n";