commit 5d68d1107c189807669ce821fa302aa41486e04f
parent 27782f158e1d58d64e02623f3880407ad5f54574
Author: David Freifeld <freifeld.david@gmail.com>
Date: Tue, 16 Jun 2020 18:44:19 -0700
Also fixed header
Diffstat:
| A | bpnn.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);