| | |
| | | #ifndef BASE_LAYER_H
|
| | | #define BASE_LAYER_H
|
| | |
|
| | | #include "activations.h"
|
| | | #include "stddef.h"
|
| | | #include "tree.h"
|
| | | #ifdef __cplusplus
|
| | | extern "C" {
|
| | | #endif
|
| | |
|
| | | //struct network_state;
|
| | |
|
| | | //struct layer;
|
| | | //typedef struct layer layer;
|
| | |
|
| | | //typedef enum {
|
| | | // CONVOLUTIONAL,
|
| | | // DECONVOLUTIONAL,
|
| | | // CONNECTED,
|
| | | // MAXPOOL,
|
| | | // SOFTMAX,
|
| | | // DETECTION,
|
| | | // DROPOUT,
|
| | | // CROP,
|
| | | // ROUTE,
|
| | | // COST,
|
| | | // NORMALIZATION,
|
| | | // AVGPOOL,
|
| | | // LOCAL,
|
| | | // SHORTCUT,
|
| | | // ACTIVE,
|
| | | // RNN,
|
| | | // GRU,
|
| | | // CRNN,
|
| | | // BATCHNORM,
|
| | | // NETWORK,
|
| | | // XNOR,
|
| | | // REGION,
|
| | | // YOLO,
|
| | | // REORG,
|
| | | // UPSAMPLE,
|
| | | // REORG_OLD,
|
| | | // BLANK
|
| | | //} LAYER_TYPE;
|
| | |
|
| | | //typedef enum{
|
| | | // 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;
|
| | | int forced;
|
| | | int flipped;
|
| | | int inputs;
|
| | | int outputs;
|
| | | int truths;
|
| | | 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 spatial;
|
| | | int pad;
|
| | | int sqrt;
|
| | | int flip;
|
| | | int index;
|
| | | int binary;
|
| | | int xnor;
|
| | | int use_bin_output;
|
| | | int steps;
|
| | | int hidden;
|
| | | float dot;
|
| | | float angle;
|
| | | float jitter;
|
| | | float saturation;
|
| | | float exposure;
|
| | | float shift;
|
| | | float ratio;
|
| | | float learning_rate_scale;
|
| | | int focal_loss;
|
| | | int noloss;
|
| | | int softmax;
|
| | | int classes;
|
| | | int coords;
|
| | | int background;
|
| | | int rescore;
|
| | | int objectness;
|
| | | 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;
|
| | |
|
| | | int t;
|
| | | float *m;
|
| | | float *v;
|
| | | float * bias_m;
|
| | | float * bias_v;
|
| | | float * scale_m;
|
| | | float * scale_v;
|
| | |
|
| | | tree *softmax_tree;
|
| | | int *map;
|
| | |
|
| | | float alpha;
|
| | | float beta;
|
| | | float kappa;
|
| | |
|
| | | 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;
|
| | |
|
| | | float temperature;
|
| | | float probability;
|
| | | float scale;
|
| | |
|
| | | int *indexes;
|
| | | float *rand;
|
| | | float *cost;
|
| | | char *cweights;
|
| | | float *state;
|
| | | float *prev_state;
|
| | | float *forgot_state;
|
| | | float *forgot_delta;
|
| | | float *state_delta;
|
| | |
|
| | | float *concat;
|
| | | float *concat_delta;
|
| | |
|
| | | float *binary_weights;
|
| | |
|
| | | float *biases;
|
| | | float *bias_updates;
|
| | |
|
| | | float *scales;
|
| | | float *scale_updates;
|
| | |
|
| | | float *weights;
|
| | | float *weight_updates;
|
| | |
|
| | | char *align_bit_weights_gpu;
|
| | | float *mean_arr_gpu;
|
| | | float *align_workspace_gpu;
|
| | | float *transposed_align_workspace_gpu;
|
| | | int align_workspace_size;
|
| | |
|
| | | char *align_bit_weights;
|
| | | float *mean_arr;
|
| | | int align_bit_weights_size;
|
| | | int lda_align;
|
| | | int new_lda;
|
| | | int bit_align;
|
| | |
|
| | | float *col_image;
|
| | | int * input_layers;
|
| | | int * input_sizes;
|
| | | float * delta;
|
| | | float * output;
|
| | | float * loss;
|
| | | float * squared;
|
| | | float * norms;
|
| | |
|
| | | float * spatial_mean;
|
| | | 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;
|
| | |
|
| | | float *z_cpu;
|
| | | float *r_cpu;
|
| | | float *h_cpu;
|
| | |
|
| | | float *binary_input;
|
| | |
|
| | | 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;
|
| | |
|
| | | // adam
|
| | | float *m_gpu;
|
| | | float *v_gpu;
|
| | | float *bias_m_gpu;
|
| | | float *scale_m_gpu;
|
| | | float *bias_v_gpu;
|
| | | float *scale_v_gpu;
|
| | |
|
| | | float *binary_input_gpu;
|
| | | float *binary_weights_gpu;
|
| | |
|
| | | float * mean_gpu;
|
| | | float * variance_gpu;
|
| | |
|
| | | float * rolling_mean_gpu;
|
| | | float * rolling_variance_gpu;
|
| | |
|
| | | float * variance_delta_gpu;
|
| | | float * mean_delta_gpu;
|
| | |
|
| | | float * col_image_gpu;
|
| | |
|
| | | float * x_gpu;
|
| | | float * x_norm_gpu;
|
| | | float * weights_gpu;
|
| | | float * weight_updates_gpu;
|
| | |
|
| | | float * weights_gpu16;
|
| | | float * weight_updates_gpu16;
|
| | |
|
| | | float * biases_gpu;
|
| | | float * bias_updates_gpu;
|
| | |
|
| | | float * scales_gpu;
|
| | | float * scale_updates_gpu;
|
| | |
|
| | | float * output_gpu;
|
| | | float * loss_gpu;
|
| | | float * delta_gpu;
|
| | | float * rand_gpu;
|
| | | float * squared_gpu;
|
| | | float * norms_gpu;
|
| | | #ifdef CUDNN
|
| | | cudnnTensorDescriptor_t srcTensorDesc, dstTensorDesc;
|
| | | cudnnTensorDescriptor_t srcTensorDesc16, dstTensorDesc16;
|
| | | cudnnTensorDescriptor_t dsrcTensorDesc, ddstTensorDesc;
|
| | | cudnnTensorDescriptor_t dsrcTensorDesc16, ddstTensorDesc16;
|
| | | cudnnTensorDescriptor_t normTensorDesc, normDstTensorDesc, normDstTensorDescF16;
|
| | | cudnnFilterDescriptor_t weightDesc, weightDesc16;
|
| | | cudnnFilterDescriptor_t dweightDesc, dweightDesc16;
|
| | | cudnnConvolutionDescriptor_t convDesc;
|
| | | cudnnConvolutionFwdAlgo_t fw_algo, fw_algo16;
|
| | | cudnnConvolutionBwdDataAlgo_t bd_algo, bd_algo16;
|
| | | cudnnConvolutionBwdFilterAlgo_t bf_algo, bf_algo16;
|
| | | cudnnPoolingDescriptor_t poolingDesc;
|
| | | #endif // CUDNN
|
| | | #endif // GPU
|
| | | };
|
| | | */
|
| | | //void free_layer(layer);
|
| | |
|
| | | #ifdef __cplusplus
|
| | | }
|
| | | #endif
|
| | | #endif
|
| | | #ifndef BASE_LAYER_H |
| | | #define BASE_LAYER_H |
| | | |
| | | #include "activations.h" |
| | | #include "stddef.h" |
| | | #include "tree.h" |
| | | #ifdef __cplusplus |
| | | extern "C" { |
| | | #endif |
| | | |
| | | //struct network_state; |
| | | |
| | | //struct layer; |
| | | //typedef struct layer layer; |
| | | |
| | | //typedef enum { |
| | | // CONVOLUTIONAL, |
| | | // DECONVOLUTIONAL, |
| | | // CONNECTED, |
| | | // MAXPOOL, |
| | | // SOFTMAX, |
| | | // DETECTION, |
| | | // DROPOUT, |
| | | // CROP, |
| | | // ROUTE, |
| | | // COST, |
| | | // NORMALIZATION, |
| | | // AVGPOOL, |
| | | // LOCAL, |
| | | // SHORTCUT, |
| | | // ACTIVE, |
| | | // RNN, |
| | | // GRU, |
| | | // CRNN, |
| | | // BATCHNORM, |
| | | // NETWORK, |
| | | // XNOR, |
| | | // REGION, |
| | | // YOLO, |
| | | // REORG, |
| | | // UPSAMPLE, |
| | | // REORG_OLD, |
| | | // BLANK |
| | | //} LAYER_TYPE; |
| | | |
| | | //typedef enum{ |
| | | // 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; |
| | | int forced; |
| | | int flipped; |
| | | int inputs; |
| | | int outputs; |
| | | int truths; |
| | | 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 spatial; |
| | | int pad; |
| | | int sqrt; |
| | | int flip; |
| | | int index; |
| | | int binary; |
| | | int xnor; |
| | | int use_bin_output; |
| | | int steps; |
| | | int hidden; |
| | | float dot; |
| | | float angle; |
| | | float jitter; |
| | | float saturation; |
| | | float exposure; |
| | | float shift; |
| | | float ratio; |
| | | float learning_rate_scale; |
| | | int focal_loss; |
| | | int noloss; |
| | | int softmax; |
| | | int classes; |
| | | int coords; |
| | | int background; |
| | | int rescore; |
| | | int objectness; |
| | | 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; |
| | | |
| | | int t; |
| | | float *m; |
| | | float *v; |
| | | float * bias_m; |
| | | float * bias_v; |
| | | float * scale_m; |
| | | float * scale_v; |
| | | |
| | | tree *softmax_tree; |
| | | int *map; |
| | | |
| | | float alpha; |
| | | float beta; |
| | | float kappa; |
| | | |
| | | 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; |
| | | |
| | | float temperature; |
| | | float probability; |
| | | float scale; |
| | | |
| | | int *indexes; |
| | | float *rand; |
| | | float *cost; |
| | | char *cweights; |
| | | float *state; |
| | | float *prev_state; |
| | | float *forgot_state; |
| | | float *forgot_delta; |
| | | float *state_delta; |
| | | |
| | | float *concat; |
| | | float *concat_delta; |
| | | |
| | | float *binary_weights; |
| | | |
| | | float *biases; |
| | | float *bias_updates; |
| | | |
| | | float *scales; |
| | | float *scale_updates; |
| | | |
| | | float *weights; |
| | | float *weight_updates; |
| | | |
| | | char *align_bit_weights_gpu; |
| | | float *mean_arr_gpu; |
| | | float *align_workspace_gpu; |
| | | float *transposed_align_workspace_gpu; |
| | | int align_workspace_size; |
| | | |
| | | char *align_bit_weights; |
| | | float *mean_arr; |
| | | int align_bit_weights_size; |
| | | int lda_align; |
| | | int new_lda; |
| | | int bit_align; |
| | | |
| | | float *col_image; |
| | | int * input_layers; |
| | | int * input_sizes; |
| | | float * delta; |
| | | float * output; |
| | | float * loss; |
| | | float * squared; |
| | | float * norms; |
| | | |
| | | float * spatial_mean; |
| | | 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; |
| | | |
| | | float *z_cpu; |
| | | float *r_cpu; |
| | | float *h_cpu; |
| | | |
| | | float *binary_input; |
| | | |
| | | 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; |
| | | |
| | | // adam |
| | | float *m_gpu; |
| | | float *v_gpu; |
| | | float *bias_m_gpu; |
| | | float *scale_m_gpu; |
| | | float *bias_v_gpu; |
| | | float *scale_v_gpu; |
| | | |
| | | float *binary_input_gpu; |
| | | float *binary_weights_gpu; |
| | | |
| | | float * mean_gpu; |
| | | float * variance_gpu; |
| | | |
| | | float * rolling_mean_gpu; |
| | | float * rolling_variance_gpu; |
| | | |
| | | float * variance_delta_gpu; |
| | | float * mean_delta_gpu; |
| | | |
| | | float * col_image_gpu; |
| | | |
| | | float * x_gpu; |
| | | float * x_norm_gpu; |
| | | float * weights_gpu; |
| | | float * weight_updates_gpu; |
| | | |
| | | float * weights_gpu16; |
| | | float * weight_updates_gpu16; |
| | | |
| | | float * biases_gpu; |
| | | float * bias_updates_gpu; |
| | | |
| | | float * scales_gpu; |
| | | float * scale_updates_gpu; |
| | | |
| | | float * output_gpu; |
| | | float * loss_gpu; |
| | | float * delta_gpu; |
| | | float * rand_gpu; |
| | | float * squared_gpu; |
| | | float * norms_gpu; |
| | | #ifdef CUDNN |
| | | cudnnTensorDescriptor_t srcTensorDesc, dstTensorDesc; |
| | | cudnnTensorDescriptor_t srcTensorDesc16, dstTensorDesc16; |
| | | cudnnTensorDescriptor_t dsrcTensorDesc, ddstTensorDesc; |
| | | cudnnTensorDescriptor_t dsrcTensorDesc16, ddstTensorDesc16; |
| | | cudnnTensorDescriptor_t normTensorDesc, normDstTensorDesc, normDstTensorDescF16; |
| | | cudnnFilterDescriptor_t weightDesc, weightDesc16; |
| | | cudnnFilterDescriptor_t dweightDesc, dweightDesc16; |
| | | cudnnConvolutionDescriptor_t convDesc; |
| | | cudnnConvolutionFwdAlgo_t fw_algo, fw_algo16; |
| | | cudnnConvolutionBwdDataAlgo_t bd_algo, bd_algo16; |
| | | cudnnConvolutionBwdFilterAlgo_t bf_algo, bf_algo16; |
| | | cudnnPoolingDescriptor_t poolingDesc; |
| | | #endif // CUDNN |
| | | #endif // GPU |
| | | }; |
| | | */ |
| | | //void free_layer(layer); |
| | | |
| | | #ifdef __cplusplus |
| | | } |
| | | #endif |
| | | #endif |