jacobian

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

commit 5d68d1107c189807669ce821fa302aa41486e04f
parent 27782f158e1d58d64e02623f3880407ad5f54574
Author: David Freifeld <freifeld.david@gmail.com>
Date:   Tue, 16 Jun 2020 18:44:19 -0700

Also fixed header

Diffstat:
Abpnn.hpp | 56++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 56 insertions(+), 0 deletions(-)

diff --git a/bpnn.hpp b/bpnn.hpp @@ -0,0 +1,56 @@ +#include "/Users/davidfreifeld/Downloads/eigen-3.3.7/Eigen/Dense" + +extern "C" { + #include "../mapreduce/mapreduce.h" +} + +#include <vector> +#include <array> +#include <iostream> +#include <string> +#include <cstdio> +#include <fstream> +#include <random> +#include <algorithm> + +class Layer { +public: + Eigen::MatrixXd* contents; + Eigen::MatrixXd* weights; + Eigen::MatrixXd* bias; + Eigen::MatrixXd* dZ; + + Layer(float* vals, int rows, int columns); + Layer(int rows, int columns); + void initWeights(Layer next); +}; + +class Network { +public: + char* fpath; + + std::vector<Layer> layers; + int length; + + float learning_rate; + int batch_size; + int batches; + Eigen::MatrixXd* labels; + + Network(char* path, int inputs, int hidden, int outputs, int neurons, int batch_sz, float rate); + void update_layer(float* vals, int datalen, int index); + + Eigen::MatrixXd activate(Eigen::MatrixXd matrix); + Eigen::MatrixXd activate_deriv(Eigen::MatrixXd matrix); + void feedforward(); + void list_net(); + + float cost(); + float gradient(int mode, int layer, int node); + void backpropagate(); + int next_batch(); + void test(char* path); +}; + +void demo(); +int prep_file(char* path);