ActivationFunctions.h

/*

libcudann

Copyright (C) 2011 Luca Donati (lucadonati85@gmail.com)

*/

/*

 * ActivationFunctions.h

 *

 *  Created on: Nov 24, 2010

 *      Author: donati

 */

#ifndef ACTIVATIONFUNCTIONS_H_

#define ACTIVATIONFUNCTIONS_H_

#define ACT_LINEAR 0

#define ACT_SIGMOID 1

#define ACT_TANH 2

//returns the value of the activation function

float actFunction(int act, float x);

//returns the value of the activation function derivation (used for backpropagation)

float actDerivation(int act, float y);

//returns the span size of a function for error calculation

float spanSize(int act);

/*//old macros

#define clip(x, lo, hi) (((x) < (lo)) ? (lo) : (((x) > (hi)) ? (hi) : (x)))

#define spanSize(act)(\

act == ACT_TANH ? 2:\

1\

)

#define actFunction(act, x)(\

act == ACT_LINEAR ? x :\

act == ACT_SIGMOID ? 1.0f/(1.0f+exp(-x)) :\

act == ACT_TANH ? 2.0f/(1.0f+exp(-x))-1.0f :\

0\

)

#define actDerivation(act, y)(\

act == ACT_LINEAR ? 1 :\

act == ACT_SIGMOID ? clip(y,0.01f,0.99f)*(1.0f-clip(y,0.01f,0.99f)) :\

act == ACT_TANH ? 0.5f*(1.0f-(clip(y,-0.98f,0.98f)*clip(y,-0.98f,0.98f))) :\

0\

)

*/

#endif /* ACTIVATIONFUNCTIONS_H_ */