Compute Library
 22.11
AclOperators.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2021 Arm Limited.
3  *
4  * SPDX-License-Identifier: MIT
5  *
6  * Permission is hereby granted, free of charge, to any person obtaining a copy
7  * of this software and associated documentation files (the "Software"), to
8  * deal in the Software without restriction, including without limitation the
9  * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10  * sell copies of the Software, and to permit persons to whom the Software is
11  * furnished to do so, subject to the following conditions:
12  *
13  * The above copyright notice and this permission notice shall be included in all
14  * copies or substantial portions of the Software.
15  *
16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22  * SOFTWARE.
23  */
24 #ifndef ARM_COMPUTE_ACL_OPERATORS_H_
25 #define ARM_COMPUTE_ACL_OPERATORS_H_
26 
28 #include "arm_compute/AclTypes.h"
29 
30 /** Used during an operator creation to validate its support */
31 #define ARM_COMPUTE_VALIDATE_OPERATOR_SUPPORT ((AclOperator *)(size_t)-1)
32 
33 #ifdef __cplusplus
34 extern "C" {
35 #endif /** __cplusplus */
36 
37 /** Create an activation operator
38  *
39  * Applies an activation function to a given tensor .
40  * Compute Library supports a wide list of activation functions @ref AclActivationType.
41  *
42  * A summarized table is the following:
43  * Activation Function | Mathematical Expression |
44  * -------------------------|------------------------------------------------------------------------------------------------------------------------------------------|
45  * Identity | \f$ f(x)= x \f$ |
46  * Logistic | \f$ f(x) = \frac{1}{1 + e^{-x}} \f$ |
47  * Tanh | \f$ f(x) = a \cdot tanh(b \cdot x) \f$ |
48  * Relu | \f$ f(x) = max(0,x) \f$ |
49  * Bounded Relu | \f$ f(x) = min(a, max(0,x)) \f$ |
50  * Lower-Upper Bounded Relu | \f$ f(x) = min(a, max(b,x)) \f$ |
51  * Leaky Relu | \f$ f(x) = \begin{cases} \alpha x & \quad \text{if } x \text{ < 0}\\ x & \quad \text{if } x \geq \text{ 0 } \end{cases} \f$ |
52  * Soft Relu | \f$ f(x)= log(1+e^x) \f$ |
53  * Soft Elu | \f$ f(x) = \begin{cases} \alpha (exp(x) - 1) & \quad \text{if } x \text{ < 0}\\ x & \quad \text{if } x \geq \text{ 0 } \end{cases} \f$ |
54  * Abs | \f$ f(x)= |x| \f$ |
55  * Square | \f$ f(x)= x^2 \f$ |
56  * Sqrt | \f$ f(x) = \sqrt{x} \f$ |
57  * Linear | \f$ f(x)= ax + b \f$ |
58  * Hard Swish | \f$ f(x) = (x * relu6(x+3))/6 \f$ |
59  *
60  * Backends:
61  * - OpenCL: ClActivationLayer
62  * - Cpu : CpuActivationLayer
63  *
64  * @param[in, out] op Operator construct to be created if creation was successful
65  * @param[in] ctx Context to be used for the creation of the operator
66  * @param[in] src Source tensor descriptor. Slot id: ACL_SRC
67  * @param[in] dst Destination tensor descriptor. Slot id: ACL_DST
68  * @param[in] info Activation meta-data
69  *
70  * @return Status code
71  *
72  * Returns:
73  * - @ref AclSuccess if function was completed successfully
74  * - @ref AclOutOfMemory if there was a failure allocating memory resources
75  * - @ref AclUnsupportedTarget if operator for the requested target is unsupported
76  * - @ref AclInvalidArgument if a given argument is invalid
77  */
79  AclContext ctx,
80  const AclTensorDescriptor *src,
81  const AclTensorDescriptor *dst,
83 #ifdef __cplusplus
84 }
85 #endif /** __cplusplus */
86 #endif /* ARM_COMPUTE_ACL_OPERATORS_H_ */
SimpleTensor< float > src
Definition: DFT.cpp:155
AclStatus AclActivation(AclOperator *op, AclContext ctx, const AclTensorDescriptor *src, const AclTensorDescriptor *dst, const AclActivationDescriptor info)
__cplusplus
ScaleKernelInfo info(interpolation_policy, default_border_mode, PixelValue(), sampling_policy, false)
AclStatus
Definition: AclTypes.h:49