Joseph Redmon
2014-10-28 af4e4f92dc9e5da160eb6c6870a7b38b863f1c6c
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
54
#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);
void push_connected_layer(connected_layer layer);
#endif
 
#endif