Edmond Yoo
2018-10-13 c59db54775606349f6ba5c6cab7fcb34498bb31d
src/layer.h
@@ -2,6 +2,10 @@
#define BASE_LAYER_H
#include "activations.h"
#include "stddef.h"
#include "tree.h"
struct network_state;
struct layer;
typedef struct layer layer;
@@ -27,6 +31,12 @@
    CRNN,
    BATCHNORM,
    NETWORK,
    XNOR,
    REGION,
   YOLO,
    REORG,
   UPSAMPLE,
   REORG_OLD,
    BLANK
} LAYER_TYPE;
@@ -34,10 +44,28 @@
    SSE, MASKED, SMOOTH
} COST_TYPE;
typedef struct {
   int batch;
   float learning_rate;
   float momentum;
   float decay;
   int adam;
   float B1;
   float B2;
   float eps;
   int t;
} update_args;
struct layer{
    LAYER_TYPE type;
    ACTIVATION activation;
    COST_TYPE cost_type;
    void (*forward)   (struct layer, struct network_state);
    void (*backward)  (struct layer, struct network_state);
    void (*update)    (struct layer, int, float, float, float);
    void (*forward_gpu)   (struct layer, struct network_state);
    void (*backward_gpu)  (struct layer, struct network_state);
    void (*update_gpu)    (struct layer, int, float, float, float);
    int batch_normalize;
    int shortcut;
    int batch;
@@ -49,10 +77,12 @@
    int h,w,c;
    int out_h, out_w, out_c;
    int n;
    int max_boxes;
    int groups;
    int size;
    int side;
    int stride;
    int reverse;
    int pad;
    int sqrt;
    int flip;
@@ -67,6 +97,8 @@
    float saturation;
    float exposure;
    float shift;
    float ratio;
   int focal_loss;
    int softmax;
    int classes;
    int coords;
@@ -76,6 +108,25 @@
    int does_cost;
    int joint;
    int noadjust;
    int reorg;
    int log;
   int tanh;
   int *mask;
   int total;
   float bflops;
    int adam;
    float B1;
    float B2;
    float eps;
    float *m_gpu;
    float *v_gpu;
    int t;
    float *m;
    float *v;
    tree *softmax_tree;
    int  *map;
    float alpha;
    float beta;
@@ -84,8 +135,19 @@
    float coord_scale;
    float object_scale;
    float noobject_scale;
   float mask_scale;
    float class_scale;
    int bias_match;
    int random;
   float ignore_thresh;
   float truth_thresh;
    float thresh;
   float focus;
    int classfix;
    int absolute;
    int onlyforward;
    int stopbackward;
    int dontload;
    int dontloadscales;
@@ -96,16 +158,17 @@
    int *indexes;
    float *rand;
    float *cost;
    float *filters;
    char  *cfilters;
    float *filter_updates;
    char  *cweights;
    float *state;
    float *prev_state;
    float *forgot_state;
    float *forgot_delta;
    float *state_delta;
    float *concat;
    float *concat_delta;
    float *binary_filters;
    float *binary_weights;
    float *biases;
    float *bias_updates;
@@ -116,6 +179,11 @@
    float *weights;
    float *weight_updates;
    char *align_bit_weights;
    float *mean_arr;
    int lda_align;
    int bit_align;
    float *col_image;
    int   * input_layers;
    int   * input_sizes;
@@ -157,6 +225,14 @@
    struct layer *input_h_layer;
    struct layer *state_h_layer;
    float *z_cpu;
    float *r_cpu;
    float *h_cpu;
    float *binary_input;
    size_t workspace_size;
    #ifdef GPU
    float *z_gpu;
    float *r_gpu;
@@ -174,11 +250,9 @@
    float * save_delta_gpu;
    float * concat_gpu;
    float * concat_delta_gpu;
    float * filters_gpu;
    float * filter_updates_gpu;
    float *binary_input_gpu;
    float *binary_filters_gpu;
    float *binary_weights_gpu;
    float * mean_gpu;
    float * variance_gpu;
@@ -196,6 +270,9 @@
    float * weights_gpu;
    float * weight_updates_gpu;
   float * weights_gpu16;
   float * weight_updates_gpu16;
    float * biases_gpu;
    float * bias_updates_gpu;
@@ -207,6 +284,17 @@
    float * rand_gpu;
    float * squared_gpu;
    float * norms_gpu;
    #ifdef CUDNN
    cudnnTensorDescriptor_t srcTensorDesc, dstTensorDesc;
    cudnnTensorDescriptor_t dsrcTensorDesc, ddstTensorDesc;
   cudnnTensorDescriptor_t normTensorDesc, normDstTensorDesc, normDstTensorDescF16;
    cudnnFilterDescriptor_t weightDesc;
    cudnnFilterDescriptor_t dweightDesc;
    cudnnConvolutionDescriptor_t convDesc;
    cudnnConvolutionFwdAlgo_t fw_algo;
    cudnnConvolutionBwdDataAlgo_t bd_algo;
    cudnnConvolutionBwdFilterAlgo_t bf_algo;
    #endif
    #endif
};