| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | #ifndef LAYER_CONVOLUTIONDEPTHWISE_H |
| | #define LAYER_CONVOLUTIONDEPTHWISE_H |
| |
|
| | #include "layer.h" |
| |
|
| | namespace ncnn { |
| |
|
| | class ConvolutionDepthWise : public Layer |
| | { |
| | public: |
| | ConvolutionDepthWise(); |
| |
|
| | virtual int load_param(const ParamDict& pd); |
| |
|
| | virtual int load_model(const ModelBin& mb); |
| |
|
| | virtual int create_pipeline(const Option& opt); |
| |
|
| | virtual int forward(const Mat& bottom_blob, Mat& top_blob, const Option& opt) const; |
| |
|
| | virtual int forward(const std::vector<Mat>& bottom_blobs, std::vector<Mat>& top_blobs, const Option& opt) const; |
| |
|
| | protected: |
| | void make_padding(const Mat& bottom_blob, Mat& bottom_blob_bordered, const Option& opt) const; |
| | void make_padding(const Mat& bottom_blob, Mat& bottom_blob_bordered, int kernel_w, int kernel_h, const Option& opt) const; |
| |
|
| | #if NCNN_INT8 |
| | int forward_int8(const Mat& bottom_blob, Mat& top_blob, const Option& opt) const; |
| | #endif |
| |
|
| | public: |
| | |
| | int num_output; |
| | int kernel_w; |
| | int kernel_h; |
| | int dilation_w; |
| | int dilation_h; |
| | int stride_w; |
| | int stride_h; |
| | int pad_left; |
| | int pad_right; |
| | int pad_top; |
| | int pad_bottom; |
| | float pad_value; |
| | int bias_term; |
| |
|
| | int weight_data_size; |
| | int group; |
| |
|
| | int int8_scale_term; |
| |
|
| | |
| | int activation_type; |
| | Mat activation_params; |
| |
|
| | int dynamic_weight; |
| |
|
| | |
| | Mat weight_data; |
| | Mat bias_data; |
| |
|
| | #if NCNN_INT8 |
| | Mat weight_data_int8_scales; |
| | Mat bottom_blob_int8_scales; |
| | Mat top_blob_int8_scales; |
| | #endif |
| | }; |
| |
|
| | } |
| |
|
| | #endif |
| |
|