ONE - On-device Neural Engine
Loading...
Searching...
No Matches
ConvolutionLayer.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2018 Samsung Electronics Co., Ltd. All Rights Reserved
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17#ifndef __ONERT_BACKEND_CPU_OPS_CONVOLUTIONLAYER_H__
18#define __ONERT_BACKEND_CPU_OPS_CONVOLUTIONLAYER_H__
19
21#include "OperationUtils.h"
22
23#include <exec/IFunction.h>
24#include <functional>
25#include <memory>
26
27namespace nnfw
28{
29namespace cker
30{
31class Conv;
32struct ConvHybridTempArena;
33class Shape;
34} // namespace cker
35} // namespace nnfw
36
37namespace onert
38{
39namespace backend
40{
41namespace cpu
42{
43namespace ops
44{
45
47{
48public:
51
52public:
53 void configure(const IPortableTensor *input, const IPortableTensor *kernel,
55 const uint32_t paddingLeft, const uint32_t paddingRight, const uint32_t paddingTop,
56 const uint32_t paddingBottom, const uint32_t strideWidth,
57 const uint32_t strideHeight, const uint32_t dilationWidthFactor,
58 const uint32_t dilationHeightFactor, const ir::Activation activation,
59 IPortableTensor *output, bool is_cachable_weights);
60 void prepare() override;
61 void run() override;
62
63private:
64 void convFloat32();
65 void convQ8uPerTensor();
66 void convQ8uPerChannel();
67 void convQ8i();
68 void convQ8iHybridPerChannel();
69
70protected:
75
77 uint32_t _paddingLeft;
78 uint32_t _paddingTop;
79 uint32_t _paddingRight;
81
82 uint32_t _strideWidth;
83 uint32_t _strideHeight;
86
88
89 std::unique_ptr<nnfw::cker::Conv> _conv_kernel;
90 std::unique_ptr<nnfw::cker::ConvHybridTempArena> _hybrid_arena;
91
95};
96
97} // namespace ops
98} // namespace cpu
99} // namespace backend
100} // namespace onert
101
102#endif // __ONERT_BACKEND_CPU_OPS_CONVOLUTIONLAYER_H__
void Conv(const float *input_data, const Dims< 4 > &input_dims, const float *filter_data, const Dims< 4 > &filter_dims, const float *bias_data, const Dims< 4 > &bias_dims, int stride_width, int stride_height, int pad_width, int pad_height, float *output_data, const Dims< 4 > &output_dims, float *im2col_data, const Dims< 4 > &im2col_dims)
A tensor class that is portable for other backends.
std::unique_ptr< nnfw::cker::Conv > _conv_kernel
void configure(const IPortableTensor *input, const IPortableTensor *kernel, const IPortableTensor *bias, ir::PaddingType _paddingType, const uint32_t paddingLeft, const uint32_t paddingRight, const uint32_t paddingTop, const uint32_t paddingBottom, const uint32_t strideWidth, const uint32_t strideHeight, const uint32_t dilationWidthFactor, const uint32_t dilationHeightFactor, const ir::Activation activation, IPortableTensor *output, bool is_cachable_weights)
std::unique_ptr< nnfw::cker::ConvHybridTempArena > _hybrid_arena
Definition topk_v2.h:30
Definition Shape.h:28