Blame projects/neural/func.inc.cpp

b579b3
#ifndef FUNC_INC_CPP
b579b3
#define FUNC_INC_CPP
b579b3
b579b3
b579b3
#include "common.inc.cpp"
b579b3
b579b3
b579b3
b579b3
typedef void Func(Neuron &n, AccumReal s);
b579b3
b579b3
b579b3
inline void funcSigmoidExp(Neuron &n, AccumReal s) {
b579b3
  //if (s > 5) s = 5; else if (s < -5) s = -5;
b579b3
  AccumReal ss = 1/(1 + std::exp(-s)); n.v = ss; n.d = ss * (1-ss);
b579b3
}
b579b3
b579b3
b579b3
inline void funcSigmoidExp2(Neuron &n, AccumReal s) {
b579b3
  //if (s > 5) s = 5; else if (s < -5) s = -5;
b579b3
  AccumReal ss = 1/(1 + std::exp(-s)); n.v = ss; n.d = 0;//ss * (1-ss) * 0.1;
b579b3
}
b579b3
b579b3
b579b3
inline void funcReLU(Neuron &n, AccumReal s)
b579b3
  { n.v = s > 0 ? s : 0; n.d = s > 0; }
b579b3
b579b3
b579b3
b579b3
#endif