jacobian

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

commit 7b914f114d89377afdbb4127c6afc14218cdb729
parent 9ec0da046648786d63e1454eda49cd32c7a37e3b
Author: David Freifeld <freifeld.david@gmail.com>
Date:   Sun, 29 Nov 2020 10:56:06 -0800

Removed traces of PReLU from master

Diffstat:
Msrc/bpnn.cpp | 19-------------------
Msrc/bpnn.hpp | 7++-----
Msrc/pybind.cpp | 1-
3 files changed, 2 insertions(+), 25 deletions(-)

diff --git a/src/bpnn.cpp b/src/bpnn.cpp @@ -119,24 +119,6 @@ void Network::init_decay(char* type, ...) #include "optimizers.cpp" -void Network::add_prelu_layer(int nodes, float a) -{ - Expects(nodes > 0); - length++; - layers.emplace_back(batch_size, nodes, a); - strcpy(layers[length-1].activation_str, "prelu"); - layers[length-1].activation = [a](float x) -> float - { - if (x > 0) return x; - else return a * x; - }; - layers[length-1].activation_deriv = [a](float x) -> float - { - if (x > 0) return 1; - else return a; - }; -} - void Network::add_layer(int nodes, char* name, std::function<float(float)> activation, std::function<float(float)> activation_deriv) { Expects(nodes > 0); @@ -215,7 +197,6 @@ void Network::list_net() std::cout << "-----------------------\nINPUT LAYER (LAYER 0)\n-----------------------\n\n\u001b[31mGENERAL INFO:\x1B[0;37m\nActivation Function: " << layers[0].activation_str << "\n\n\u001b[31mACTIVATIONS:\x1B[0;37m\n" << *layers[0].contents << "\n\n\u001b[31mWEIGHTS:\x1B[0;37m\n" << *layers[0].weights << "\n\n\u001b[31mBIASES:\x1B[0;37m\n" << *layers[0].bias << "\n\n\n"; for (int i = 1; i < length-1; i++) { std::cout << "-----------------------\nLAYER " << i << "\n-----------------------\n\n\u001b[31mGENERAL INFO:\x1B[0;37m\nActivation Function: " << layers[i].activation_str; - if (strcmp(layers[i].activation_str, "prelu") == 0) std::cout << "\x1B[0;37m\nAlpha (a) value: " << layers[i].alpha; std::cout << "\n\n\u001b[31mACTIVATIONS:\x1B[0;37m\n" << *layers[i].contents << "\n\n\u001b[31mBIASES:\x1B[0;37m\n" << *layers[i].bias << "\n\n\u001b[31mWEIGHTS:\x1B[0;37m\n" << *layers[i].weights << "\n\n\n"; } std::cout << "-----------------------\nOUTPUT LAYER (LAYER " << length-1 << ")\n-----------------------\n\n\u001b[31mGENERAL INFO:\x1B[0;37m\nActivation Function: " << layers[length-1].activation_str <<"\n\n\u001b[31mACTIVATIONS:\x1B[0;37m\n" << *layers[length-1].contents << "\n\n\u001b[31BIASES:\x1B[0;37m\n" << *layers[length-1].bias << "\n\n\n"; diff --git a/src/bpnn.hpp b/src/bpnn.hpp @@ -33,10 +33,8 @@ public: Eigen::MatrixXf* dZ; std::function<float(float)> activation; std::function<float(float)> activation_deriv; - char activation_str[1024]; - // TODO: Fix PReLU layer inheritance | -p C -m PReLU layers shouldn't be Layers but inherit from them! - float alpha; - + char activation_str[32]; + Layer(int rows, int columns, float a=0); Layer(float* vals, int rows, int columns); void operator=(const Layer& that); @@ -79,7 +77,6 @@ public: float l, float ratio, bool early_exit=true, float cutoff=0); ~Network(); void add_layer(int nodes, char* name, std::function<float(float)> activation, std::function<float(float)> activation_deriv); - void add_prelu_layer(int nodes, float a); void init_decay(char* type, ...); void init_optimizer(char* name, ...); void initialize(); diff --git a/src/pybind.cpp b/src/pybind.cpp @@ -15,7 +15,6 @@ PYBIND11_MODULE(mrbpnn, m) { py::class_<Network>(m, "Network") .def(py::init<char*, int, float, float, int, float, float, bool, float>()) .def("add_layer", &Network::add_layer, py::arg("nodes"), py::arg("activation"), py::arg("activation_deriv")) - //.def("add_prelu_layer", &Network::add_prelu_layer, py::arg("nodes"), py::arg("a")) .def("initialize", &Network::initialize) //.def("init_decay", &Network::init_decay, py::arg("type"), py::arg("a_0"), py::arg("k")) //.def("set_activation", &Network::set_activation)