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