diff options
Diffstat (limited to 'ml/dlib/dlib/dnn/cpu_dlib.h')
-rw-r--r-- | ml/dlib/dlib/dnn/cpu_dlib.h | 505 |
1 files changed, 0 insertions, 505 deletions
diff --git a/ml/dlib/dlib/dnn/cpu_dlib.h b/ml/dlib/dlib/dnn/cpu_dlib.h deleted file mode 100644 index 330df01a2..000000000 --- a/ml/dlib/dlib/dnn/cpu_dlib.h +++ /dev/null @@ -1,505 +0,0 @@ -// Copyright (C) 2015 Davis E. King (davis@dlib.net) -// License: Boost Software License See LICENSE.txt for the full license. -#ifndef DLIB_DNN_CPU_H_ -#define DLIB_DNN_CPU_H_ - -// This file contains CPU implementations of the GPU based functions in cuda_dlib.h -// and cudnn_dlibapi.h - -#include "tensor.h" -#include "../geometry/rectangle.h" - -namespace dlib -{ - namespace cpu - { - - // ----------------------------------------------------------------------------------- - - void multiply ( - bool add_to, - tensor& dest, - const tensor& src1, - const tensor& src2 - ); - - void multiply_conv ( - bool add_to, - tensor& dest, - const tensor& src1, - const tensor& src2 - ); - - void multiply_zero_padded ( - bool add_to, - tensor& dest, - const tensor& src1, - const tensor& src2 - ); - - void scale_channels ( - bool add_to, - tensor& dest, - const tensor& src, - const tensor& scales - ); - - void add( - float beta, - tensor& dest, - float alpha, - const tensor& src - ); - - void assign_bias_gradient ( - tensor& grad, - const tensor& gradient_input - ); - - void add ( - tensor& dest, - const tensor& src1, - const tensor& src2 - ); - - void assign_conv_bias_gradient ( - tensor& grad, - const tensor& gradient_input - ); - - // ----------------------------------------------------------------------------------- - - void affine_transform( - tensor& dest, - const tensor& src, - const float A, - const float B - ); - - void affine_transform( - tensor& dest, - const tensor& src1, - const tensor& src2, - const float A, - const float B, - const float C - ); - - void affine_transform( - tensor& dest, - const tensor& src1, - const tensor& src2, - const tensor& src3, - const float A, - const float B, - const float C, - const float D - ); - - void affine_transform_range( - size_t begin, - size_t end, - tensor& dest, - const tensor& src1, - const tensor& src2, - const tensor& src3, - const float A, - const float B, - const float C - ); - - // ----------------------------------------------------------------------------------- - - void affine_transform( - tensor& dest, - const tensor& src, - const tensor& A, - const tensor& B - ); - - // ----------------------------------------------------------------------------------- - - void affine_transform_conv( - tensor& dest, - const tensor& src, - const tensor& A, - const tensor& B - ); - - // ----------------------------------------------------------------------------------- - - void affine_transform( - const rectangle& rect, - tensor& dest, - const tensor& src1, - const tensor& src2, - const tensor& src3, - float A, - float B, - float C - ); - - // ----------------------------------------------------------------------------------- - - void compute_adam_update ( - size_t begin, - size_t end, - tensor& s, - tensor& m, - tensor& v, - const float t, - const float learning_rate, - const float weight_decay, - const float momentum1, - const float momentum2, - const tensor& params, - const tensor& params_grad - ); - - // ----------------------------------------------------------------------------------- - - void batch_normalize_inference ( - const double eps, - resizable_tensor& dest, - const tensor& src, - const tensor& gamma, - const tensor& beta, - const tensor& running_means, - const tensor& running_variances - ); - - void batch_normalize ( - const double eps, - resizable_tensor& dest, - resizable_tensor& means, - resizable_tensor& invstds, - const double averaging_factor, - resizable_tensor& running_means, - resizable_tensor& running_variances, - const tensor& src, - const tensor& gamma, - const tensor& beta - ); - - void batch_normalize_gradient ( - const double eps, - const tensor& gradient_input, - const tensor& means, - const tensor& invstds, - const tensor& src, - const tensor& gamma, - tensor& src_grad, - tensor& gamma_grad, - tensor& beta_grad - ); - - void batch_normalize_conv_inference ( - const double eps, - resizable_tensor& dest, - const tensor& src, - const tensor& gamma, - const tensor& beta, - const tensor& running_means, - const tensor& running_variances - ); - - void batch_normalize_conv ( - const double eps, - resizable_tensor& dest, - resizable_tensor& means, - resizable_tensor& invstds, - const double averaging_factor, - resizable_tensor& running_means, - resizable_tensor& running_variances, - const tensor& src, - const tensor& gamma, - const tensor& beta - ); - - void batch_normalize_conv_gradient ( - const double eps, - const tensor& gradient_input, - const tensor& means, - const tensor& invstds, - const tensor& src, - const tensor& gamma, - tensor& src_grad, - tensor& gamma_grad, - tensor& beta_grad - ); - - // ----------------------------------------------------------------------------------- - - void threshold ( - tensor& data, - float thresh - ); - - void dot ( - const tensor& a, - const tensor& b, - tensor& result, - size_t idx - ); - - // ----------------------------------------------------------------------------------- - - void softmax ( - tensor& dest, - const tensor& src - ); - - void softmax_gradient ( - tensor& grad, - const tensor& dest, - const tensor& gradient_input - ); - - // ------------------------------------------------------------------------------------ - - void softmax_all ( - tensor& dest, - const tensor& src - ); - - void softmax_all_gradient ( - tensor& grad, - const tensor& dest, - const tensor& gradient_input - ); - - // ------------------------------------------------------------------------------------ - - void sigmoid ( - tensor& dest, - const tensor& src - ); - - void sigmoid_gradient ( - tensor& grad, - const tensor& dest, - const tensor& gradient_input - ); - - // ------------------------------------------------------------------------------------ - - void relu ( - tensor& dest, - const tensor& src - ); - - void relu_gradient ( - tensor& grad, - const tensor& dest, - const tensor& gradient_input - ); - - // ---------------------------------------------------------------------------------------- - - void prelu ( - tensor& dest, - const tensor& src, - const tensor& param - ); - - void prelu_gradient ( - tensor& grad, - const tensor& src, - const tensor& gradient_input, - const tensor& param, - tensor& params_grad - ); - - // ------------------------------------------------------------------------------------ - - void tanh ( - tensor& dest, - const tensor& src - ); - - void tanh_gradient ( - tensor& grad, - const tensor& dest, - const tensor& gradient_input - ); - - // ---------------------------------------------------------------------------------------- - - void resize_bilinear ( - tensor& dest, - long dest_row_stride, - long dest_channel_stride, - const tensor& src, - long src_row_stride, - long src_channel_stride - ); - - void resize_bilinear_gradient ( - tensor& grad, - long grad_row_stride, - long grad_channel_stride, - const tensor& gradient_input, - long gradient_input_row_stride, - long gradient_input_channel_stride - ); - - inline void resize_bilinear ( - tensor& dest, - const tensor& src - ) { resize_bilinear(dest, dest.nc(), dest.nr()*dest.nc(), src, src.nc(), src.nr()*src.nc()); } - - inline void resize_bilinear_gradient ( - tensor& grad, - const tensor& gradient_input - ) { resize_bilinear_gradient(grad, grad.nc(), grad.nr()*grad.nc(), gradient_input, gradient_input.nc(), gradient_input.nr()*gradient_input.nc()); } - - // ----------------------------------------------------------------------------------- - - class pooling - { - public: - - pooling(const pooling&) = delete; - pooling& operator=(const pooling&) = delete; - - pooling ( - ); - - void clear( - ); - - void setup_max_pooling( - int window_height, - int window_width, - int stride_y, - int stride_x, - int padding_y, - int padding_x - ); - - void setup_avg_pooling( - int window_height, - int window_width, - int stride_y, - int stride_x, - int padding_y, - int padding_x - ); - - bool does_max_pooling( - ) const { return do_max_pooling; } - - void operator() ( - resizable_tensor& dest, - const tensor& src - ); - - void get_gradient( - const tensor& gradient_input, - const tensor& dest, - const tensor& src, - tensor& grad - ); - - private: - int window_height; - int window_width; - int stride_y; - int stride_x; - int padding_y; - int padding_x; - bool do_max_pooling; - - }; - - // ----------------------------------------------------------------------------------- - - class tensor_conv - { - public: - tensor_conv(const tensor_conv&) = delete; - tensor_conv& operator=(const tensor_conv&) = delete; - - tensor_conv() {} - - void clear( - ) {} - - void setup( - const tensor& data, /* not used but required for interface */ - const tensor& filters, /* not used but required for interface */ - int stride_y, - int stride_x, - int padding_y, - int padding_x - ) - { - (void)data; /* silence compiler */ - DLIB_CASSERT(stride_y > 0 && stride_x > 0); - DLIB_CASSERT(0 <= padding_y && padding_y < filters.nr()); - DLIB_CASSERT(0 <= padding_x && padding_x < filters.nc()); - last_stride_y = stride_y; - last_stride_x = stride_x; - last_padding_y = padding_y; - last_padding_x = padding_x; - } - - void operator() ( - const bool add_to_output, - resizable_tensor& output, - const tensor& data, - const tensor& filters - ); - - void operator() ( - const bool add_to_output, - tensor& output, - const tensor& data, - const tensor& filters - ); - - void get_gradient_for_data ( - const bool add_to_output, - const tensor& gradient_input, - const tensor& filters, - tensor& data_gradient - ); - - void get_gradient_for_filters ( - const bool add_to_output, - const tensor& gradient_input, - const tensor& data, - tensor& filters_gradient - ); - - private: - - long last_stride_y = 0; - long last_stride_x = 0; - long last_padding_y = 0; - long last_padding_x = 0; - }; - - // ----------------------------------------------------------------------------------- - - void copy_tensor( - bool add_to, - tensor& dest, - size_t dest_k_offset, - const tensor& src, - size_t src_k_offset, - size_t count_k - ); - - // ----------------------------------------------------------------------------------- - - } -} - -#ifdef NO_MAKEFILE -#include "cpu_dlib.cpp" -#endif - -#endif // DLIB_DNN_CPU_H_ - - |