MBDyn-1.7.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups
ActivationFunction.c File Reference
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include "ActivationFunction.h"
#include "matrix.h"
Include dependency graph for ActivationFunction.c:

Go to the source code of this file.

Functions

int w_tanh_init (void **privp)
 
int w_tanh_destroy (void *priv)
 
int w_tanh_read (void *priv, FILE *fh, unsigned flags)
 
int w_tanh_write (void *priv, FILE *fh, unsigned flags)
 
int w_tanh_eval (void *priv, double in, int order, double *outp)
 
int w_linear_init (void **privp)
 
int w_linear_destroy (void *priv)
 
int w_linear_read (void *priv, FILE *fh, unsigned flags)
 
int w_linear_write (void *priv, FILE *fh, unsigned flags)
 
int w_linear_eval (void *priv, double in, int order, double *outp)
 

Function Documentation

int w_linear_destroy ( void *  priv)

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 *  priv,
double  in,
int  order,
double *  outp 
)

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 }
int w_linear_init ( void **  privp)

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 *  priv,
FILE *  fh,
unsigned  flags 
)

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 *  priv,
FILE *  fh,
unsigned  flags 
)

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 *  priv)

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 *  priv,
double  in,
int  order,
double *  outp 
)

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

Here is the call graph for this function:

int w_tanh_init ( void **  privp)

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 *  priv,
FILE *  fh,
unsigned  flags 
)

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 *  priv,
FILE *  fh,
unsigned  flags 
)

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