MBDyn-1.7.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups
ActivationFunction.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  w_tanh_t
 
struct  w_linear_t
 

Macros

#define W_F_NONE   (0x00U)
 
#define W_F_TEXT   (0x01U)
 
#define W_F_BIN   (0x02U)
 

Typedefs

typedef int(* w_init_f )(void **)
 
typedef int(* w_destroy_f )(void *)
 
typedef int(* w_read_f )(void *, FILE *fd, unsigned flags)
 
typedef int(* w_write_f )(void *, FILE *fd, unsigned flags)
 
typedef int(* w_eval_f )(void *, double, int, double *)
 
typedef struct w_tanh_t w_tanh_t
 
typedef struct w_linear_t w_linear_t
 

Functions

int w_tanh_init (void **)
 
int w_tanh_destroy (void *)
 
int w_tanh_read (void *, FILE *, unsigned)
 
int w_tanh_write (void *, FILE *, unsigned)
 
int w_tanh_eval (void *, double, int, double *)
 
int w_linear_init (void **)
 
int w_linear_destroy (void *)
 
int w_linear_read (void *, FILE *, unsigned)
 
int w_linear_write (void *, FILE *, unsigned)
 
int w_linear_eval (void *, double, int, double *)
 

Macro Definition Documentation

#define W_F_BIN   (0x02U)

Definition at line 40 of file ActivationFunction.h.

Referenced by ANN_write(), w_linear_write(), and w_tanh_write().

#define W_F_NONE   (0x00U)

Definition at line 38 of file ActivationFunction.h.

Referenced by ANN_init().

#define W_F_TEXT   (0x01U)

Definition at line 39 of file ActivationFunction.h.

Referenced by ANN_write(), w_linear_write(), and w_tanh_write().

Typedef Documentation

typedef int(* w_destroy_f)(void *)

Definition at line 43 of file ActivationFunction.h.

typedef int(* w_eval_f)(void *, double, int, double *)

Definition at line 46 of file ActivationFunction.h.

typedef int(* w_init_f)(void **)

Definition at line 42 of file ActivationFunction.h.

typedef struct w_linear_t w_linear_t
typedef int(* w_read_f)(void *, FILE *fd, unsigned flags)

Definition at line 44 of file ActivationFunction.h.

typedef struct w_tanh_t w_tanh_t
typedef int(* w_write_f)(void *, FILE *fd, unsigned flags)

Definition at line 45 of file ActivationFunction.h.

Function Documentation

int w_linear_destroy ( void *  )

Definition at line 128 of file ActivationFunction.c.

Referenced by ANN_init().

129 {
130 #if 0
131  w_tanh_t *data = (w_tanh_t *)priv;
132 #endif
133 
134  free(priv);
135 
136  return 0;
137 }
int w_linear_eval ( void *  ,
double  ,
int  ,
double *   
)

Definition at line 168 of file ActivationFunction.c.

References w_linear_t::m, and w_linear_t::q.

Referenced by ANN_init().

169 {
170  w_linear_t *data = (w_linear_t *)priv;
171  double y;
172 
173  switch (order) {
174  case 0:
175  y = data->m*in + data->q;
176  break;
177 
178  case 1:
179  y = data->m;
180  break;
181 
182  default:
183  return 1;
184  }
185 
186  *outp = y;
187 
188  return 0;
189 }
enum @55 order
int w_linear_init ( void **  )

Definition at line 120 of file ActivationFunction.c.

Referenced by ANN_init().

121 {
122  *privp = malloc(sizeof(w_linear_t));
123 
124  return (*privp == NULL);
125 }
int w_linear_read ( void *  ,
FILE *  ,
unsigned   
)

Definition at line 140 of file ActivationFunction.c.

References w_linear_t::m, and w_linear_t::q.

Referenced by ANN_init().

141 {
142  w_linear_t *data = (w_linear_t *)priv;
143 
144  fscanf(fh, "%lf", &data->m);
145  fscanf(fh, "%lf", &data->q);
146 
147  return 0;
148 }
int w_linear_write ( void *  ,
FILE *  ,
unsigned   
)

Definition at line 151 of file ActivationFunction.c.

References w_linear_t::m, w_linear_t::q, W_F_BIN, and W_F_TEXT.

Referenced by ANN_init().

152 {
153  w_linear_t *data = (w_linear_t *)priv;
154 
155  if (flags & W_F_BIN) {
156  fprintf(fh, "%d\n%e %e",
157  2,data->m, data->q);
158 
159  } else if (flags & W_F_TEXT) {
160  fprintf(fh, "linear m=%e q=%e\n",
161  data->m, data->q);
162  }
163 
164  return 0;
165 }
#define W_F_BIN
#define W_F_TEXT
int w_tanh_destroy ( void *  )

Definition at line 54 of file ActivationFunction.c.

Referenced by ANN_init().

55 {
56 #if 0
57  w_tanh_t *data = (w_tanh_t *)priv;
58 #endif
59 
60  free(priv);
61 
62  return 0;
63 }
int w_tanh_eval ( void *  ,
double  ,
int  ,
double *   
)

Definition at line 94 of file ActivationFunction.c.

References w_tanh_t::alpha, w_tanh_t::beta, and grad::tanh().

Referenced by ANN_init().

95 {
96  w_tanh_t *data = (w_tanh_t *)priv;
97  double y;
98 
99  switch (order) {
100  case 0:
101  y = data->alpha*tanh(data->beta*in);
102  break;
103 
104  case 1:
105  y = tanh(data->beta*in);
106  y = data->alpha*data->beta*(1. - y*y);
107  break;
108 
109  default:
110  return 1;
111  }
112 
113  *outp = y;
114 
115  return 0;
116 }
GradientExpression< UnaryExpr< FuncTanh, Expr > > tanh(const GradientExpression< Expr > &u)
Definition: gradient.h:2982
enum @55 order

Here is the call graph for this function:

int w_tanh_init ( void **  )

Definition at line 46 of file ActivationFunction.c.

Referenced by ANN_init().

47 {
48  *privp = malloc(sizeof(w_tanh_t));
49 
50  return (*privp == NULL);
51 }
int w_tanh_read ( void *  ,
FILE *  ,
unsigned   
)

Definition at line 66 of file ActivationFunction.c.

References w_tanh_t::alpha, and w_tanh_t::beta.

Referenced by ANN_init().

67 {
68  w_tanh_t *data = (w_tanh_t *)priv;
69 
70  fscanf(fh, "%lf", &data->alpha);
71  fscanf(fh, "%lf", &data->beta);
72 
73  return 0;
74 }
int w_tanh_write ( void *  ,
FILE *  ,
unsigned   
)

Definition at line 77 of file ActivationFunction.c.

References w_tanh_t::alpha, w_tanh_t::beta, W_F_BIN, and W_F_TEXT.

Referenced by ANN_init().

78 {
79  w_tanh_t *data = (w_tanh_t *)priv;
80 
81  if (flags & W_F_BIN) {
82  fprintf(fh, "%d\n%e %e",
83  1,data->alpha, data->beta);
84 
85  } else if (flags & W_F_TEXT) {
86  fprintf(fh, "tanh alpha=%e beta=%e\n",
87  data->alpha, data->beta);
88  }
89 
90  return 0;
91 }
#define W_F_BIN
#define W_F_TEXT