Joseph Redmon
2016-05-13 13209df7bb53de19aa3f82e870db11eb5b7587f1
src/layer.h
@@ -2,6 +2,10 @@
#define BASE_LAYER_H
#include "activations.h"
#include "stddef.h"
struct layer;
typedef struct layer layer;
typedef enum {
    CONVOLUTIONAL,
@@ -16,20 +20,30 @@
    COST,
    NORMALIZATION,
    AVGPOOL,
    LOCAL
    LOCAL,
    SHORTCUT,
    ACTIVE,
    RNN,
    GRU,
    CRNN,
    BATCHNORM,
    NETWORK,
    BLANK
} LAYER_TYPE;
typedef enum{
    SSE, MASKED
    SSE, MASKED, SMOOTH
} COST_TYPE;
typedef struct {
struct layer{
    LAYER_TYPE type;
    ACTIVATION activation;
    COST_TYPE cost_type;
    int batch_normalize;
    int shortcut;
    int batch;
    int forced;
    int flipped;
    int inputs;
    int outputs;
    int truths;
@@ -41,10 +55,14 @@
    int side;
    int stride;
    int pad;
    int crop_width;
    int crop_height;
    int sqrt;
    int flip;
    int index;
    int binary;
    int xnor;
    int steps;
    int hidden;
    float dot;
    float angle;
    float jitter;
    float saturation;
@@ -72,6 +90,7 @@
    int dontload;
    int dontloadscales;
    float temperature;
    float probability;
    float scale;
@@ -79,7 +98,15 @@
    float *rand;
    float *cost;
    float *filters;
    char  *cfilters;
    float *filter_updates;
    float *state;
    float *state_delta;
    float *concat;
    float *concat_delta;
    float *binary_filters;
    float *biases;
    float *bias_updates;
@@ -102,16 +129,59 @@
    float * mean;
    float * variance;
    float * mean_delta;
    float * variance_delta;
    float * rolling_mean;
    float * rolling_variance;
    float * x;
    float * x_norm;
    struct layer *input_layer;
    struct layer *self_layer;
    struct layer *output_layer;
    struct layer *input_gate_layer;
    struct layer *state_gate_layer;
    struct layer *input_save_layer;
    struct layer *state_save_layer;
    struct layer *input_state_layer;
    struct layer *state_state_layer;
    struct layer *input_z_layer;
    struct layer *state_z_layer;
    struct layer *input_r_layer;
    struct layer *state_r_layer;
    struct layer *input_h_layer;
    struct layer *state_h_layer;
    size_t workspace_size;
    #ifdef GPU
    float *z_gpu;
    float *r_gpu;
    float *h_gpu;
    int *indexes_gpu;
    float * prev_state_gpu;
    float * forgot_state_gpu;
    float * forgot_delta_gpu;
    float * state_gpu;
    float * state_delta_gpu;
    float * gate_gpu;
    float * gate_delta_gpu;
    float * save_gpu;
    float * save_delta_gpu;
    float * concat_gpu;
    float * concat_delta_gpu;
    float * filters_gpu;
    float * filter_updates_gpu;
    float * spatial_mean_gpu;
    float * spatial_variance_gpu;
    float *binary_input_gpu;
    float *binary_filters_gpu;
    float * mean_gpu;
    float * variance_gpu;
@@ -119,9 +189,6 @@
    float * rolling_mean_gpu;
    float * rolling_variance_gpu;
    float * spatial_mean_delta_gpu;
    float * spatial_variance_delta_gpu;
    float * variance_delta_gpu;
    float * mean_delta_gpu;
@@ -143,8 +210,18 @@
    float * rand_gpu;
    float * squared_gpu;
    float * norms_gpu;
    #ifdef CUDNN
    cudnnTensorDescriptor_t srcTensorDesc, dstTensorDesc;
    cudnnTensorDescriptor_t dsrcTensorDesc, ddstTensorDesc;
    cudnnFilterDescriptor_t filterDesc;
    cudnnFilterDescriptor_t dfilterDesc;
    cudnnConvolutionDescriptor_t convDesc;
    cudnnConvolutionFwdAlgo_t fw_algo;
    cudnnConvolutionBwdDataAlgo_t bd_algo;
    cudnnConvolutionBwdFilterAlgo_t bf_algo;
    #endif
} layer;
    #endif
};
void free_layer(layer);