jacobian

a basic keras-like neural network library for c++/python
Log | Files | Refs | README

utils.hpp (1627B)


      1 #ifndef UTILS_H
      2 #define UTILS_H
      3 
      4 #include <functional>
      5 #include <Eigen/Dense>
      6 #include "bpnn.hpp"
      7 
      8 namespace Jacobian {
      9 namespace activations {
     10 float sigmoid(float x);
     11 float sigmoid_deriv(float x);
     12 float linear(float x);
     13 float linear_deriv(float x);
     14 float step(float x);
     15 float step_deriv(float x);
     16 float bipolar(float x);
     17 float bipolar_deriv(float x);
     18 float mytanh(float x);
     19 float tanh_deriv(float x);
     20 float lecun_tanh(float x);
     21 float lecun_tanh_deriv(float x);
     22 float cloglog(float x);
     23 float cloglog_deriv(float x);
     24 float softplus(float x);
     25 float softplus_deriv(float x);
     26 float inverse_logit(float x);
     27 float inverse_logit_deriv(float x);
     28 float hard_tanh(float x);
     29 float hard_tanh_deriv(float x);
     30 float bipolar_sigmoid(float x);
     31 float bipolar_sigmoid_deriv(float x);
     32 float leaky_relu(float x);
     33 float leaky_relu_deriv(float x);
     34 std::function<float(float)> rectifier(float (*activation)(float));
     35 }
     36 
     37 namespace optimizers {
     38 std::function<void(Layer&, Eigen::MatrixXf, float)> momentum(float beta);
     39 std::function<void(Layer&, Eigen::MatrixXf, float)> demon(float beta_init, int max_ep);
     40 std::function<void(Layer&, Eigen::MatrixXf, float)> adam(float beta1, float beta2, float epsilon);
     41 std::function<void(Layer&, Eigen::MatrixXf, float)> adamax(float beta1, float beta2, float epsilon);
     42 }
     43 
     44 namespace decays {
     45 std::function<void(float &)> step(float a_0, float k);
     46 std::function<void(float &)> exponential(float a_0, float k);
     47 std::function<void(float &)> fractional(float a_0, float k);
     48 std::function<void(float &)> linear(int max_ep);
     49 }
     50 
     51 Eigen::MatrixXf strassen_mul(Eigen::MatrixXf a, Eigen::MatrixXf b);
     52 
     53 }
     54 
     55 #endif /* MODULE_H */