1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
| #ifndef CONNECTED_LAYER_H
| #define CONNECTED_LAYER_H
|
| #include "activations.h"
| #include "opencl.h"
|
| typedef struct{
| float learning_rate;
| float momentum;
| float decay;
|
| int batch;
| int inputs;
| int outputs;
| float *weights;
| float *biases;
|
| float *weight_updates;
| float *bias_updates;
|
| float *weight_adapt;
| float *bias_adapt;
|
| float *output;
| float *delta;
|
| #ifdef GPU
| cl_mem weights_cl;
| cl_mem biases_cl;
|
| cl_mem weight_updates_cl;
| cl_mem bias_updates_cl;
|
| cl_mem output_cl;
| cl_mem delta_cl;
| #endif
| ACTIVATION activation;
|
| } connected_layer;
|
| connected_layer *make_connected_layer(int batch, int inputs, int outputs, ACTIVATION activation, float learning_rate, float momentum, float decay);
|
| void forward_connected_layer(connected_layer layer, float *input);
| void backward_connected_layer(connected_layer layer, float *input, float *delta);
| void update_connected_layer(connected_layer layer);
|
| #ifdef GPU
| void forward_connected_layer_gpu(connected_layer layer, cl_mem input);
| void backward_connected_layer_gpu(connected_layer layer, cl_mem input, cl_mem delta);
| void update_connected_layer_gpu(connected_layer layer);
| #endif
|
| #endif
|
|