darknet  v3
activations.c
Go to the documentation of this file.
1 #include "activations.h"
2 
3 #include <math.h>
4 #include <stdio.h>
5 #include <stdlib.h>
6 #include <string.h>
7 
9 {
10  switch(a){
11  case LOGISTIC:
12  return "logistic";
13  case LOGGY:
14  return "loggy";
15  case RELU:
16  return "relu";
17  case ELU:
18  return "elu";
19  case SELU:
20  return "selu";
21  case RELIE:
22  return "relie";
23  case RAMP:
24  return "ramp";
25  case LINEAR:
26  return "linear";
27  case TANH:
28  return "tanh";
29  case PLSE:
30  return "plse";
31  case LEAKY:
32  return "leaky";
33  case STAIR:
34  return "stair";
35  case HARDTAN:
36  return "hardtan";
37  case LHTAN:
38  return "lhtan";
39  default:
40  break;
41  }
42  return "relu";
43 }
44 
46 {
47  if (strcmp(s, "logistic")==0) return LOGISTIC;
48  if (strcmp(s, "loggy")==0) return LOGGY;
49  if (strcmp(s, "relu")==0) return RELU;
50  if (strcmp(s, "elu")==0) return ELU;
51  if (strcmp(s, "selu")==0) return SELU;
52  if (strcmp(s, "relie")==0) return RELIE;
53  if (strcmp(s, "plse")==0) return PLSE;
54  if (strcmp(s, "hardtan")==0) return HARDTAN;
55  if (strcmp(s, "lhtan")==0) return LHTAN;
56  if (strcmp(s, "linear")==0) return LINEAR;
57  if (strcmp(s, "ramp")==0) return RAMP;
58  if (strcmp(s, "leaky")==0) return LEAKY;
59  if (strcmp(s, "tanh")==0) return TANH;
60  if (strcmp(s, "stair")==0) return STAIR;
61  fprintf(stderr, "Couldn't find activation function %s, going with ReLU\n", s);
62  return RELU;
63 }
64 
65 float activate(float x, ACTIVATION a)
66 {
67  switch(a){
68  case LINEAR:
69  return linear_activate(x);
70  case LOGISTIC:
71  return logistic_activate(x);
72  case LOGGY:
73  return loggy_activate(x);
74  case RELU:
75  return relu_activate(x);
76  case ELU:
77  return elu_activate(x);
78  case SELU:
79  return selu_activate(x);
80  case RELIE:
81  return relie_activate(x);
82  case RAMP:
83  return ramp_activate(x);
84  case LEAKY:
85  return leaky_activate(x);
86  case TANH:
87  return tanh_activate(x);
88  case PLSE:
89  return plse_activate(x);
90  case STAIR:
91  return stair_activate(x);
92  case HARDTAN:
93  return hardtan_activate(x);
94  case LHTAN:
95  return lhtan_activate(x);
96  }
97  return 0;
98 }
99 
100 void activate_array(float *x, const int n, const ACTIVATION a)
101 {
102  int i;
103  for(i = 0; i < n; ++i){
104  x[i] = activate(x[i], a);
105  }
106 }
107 
108 float gradient(float x, ACTIVATION a)
109 {
110  switch(a){
111  case LINEAR:
112  return linear_gradient(x);
113  case LOGISTIC:
114  return logistic_gradient(x);
115  case LOGGY:
116  return loggy_gradient(x);
117  case RELU:
118  return relu_gradient(x);
119  case ELU:
120  return elu_gradient(x);
121  case SELU:
122  return selu_gradient(x);
123  case RELIE:
124  return relie_gradient(x);
125  case RAMP:
126  return ramp_gradient(x);
127  case LEAKY:
128  return leaky_gradient(x);
129  case TANH:
130  return tanh_gradient(x);
131  case PLSE:
132  return plse_gradient(x);
133  case STAIR:
134  return stair_gradient(x);
135  case HARDTAN:
136  return hardtan_gradient(x);
137  case LHTAN:
138  return lhtan_gradient(x);
139  }
140  return 0;
141 }
142 
143 void gradient_array(const float *x, const int n, const ACTIVATION a, float *delta)
144 {
145  int i;
146  for(i = 0; i < n; ++i){
147  delta[i] *= gradient(x[i], a);
148  }
149 }
150 
Definition: darknet.h:57
ACTIVATION
Definition: darknet.h:56
Definition: darknet.h:57
void gradient_array(const float *x, const int n, const ACTIVATION a, float *delta)
Definition: activations.c:143
Definition: darknet.h:57
Definition: darknet.h:57
Definition: darknet.h:57
Definition: darknet.h:57
Definition: darknet.h:57
ACTIVATION get_activation(char *s)
Definition: activations.c:45
float activate(float x, ACTIVATION a)
Definition: activations.c:65
float gradient(float x, ACTIVATION a)
Definition: activations.c:108
void activate_array(float *x, const int n, const ACTIVATION a)
Definition: activations.c:100
Definition: darknet.h:57
Definition: darknet.h:57
Definition: darknet.h:57
Definition: darknet.h:57
char * get_activation_string(ACTIVATION a)
Definition: activations.c:8
Definition: darknet.h:57