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:
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)