latest/amd_openvx/openvx/include/VX/vx_khr_nn.h Source File

latest/amd_openvx/openvx/include/VX/vx_khr_nn.h Source File#

MIVisionX: latest/amd_openvx/openvx/include/VX/vx_khr_nn.h Source File
vx_khr_nn.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2012-2020 The Khronos Group Inc.
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 _VX_KHR_NN_H_
18#define _VX_KHR_NN_H_
19
28#define OPENVX_KHR_NN "vx_khr_nn"
29
30#include <VX/vx.h>
31
32
33#ifdef __cplusplus
34extern "C" {
35#endif
36
37
38/*==============================================================================
39CONVOLUTIONAL_NETWORK structs and enums
40=============================================================================*/
41
45#define VX_LIBRARY_KHR_NN_EXTENSION (0x1)
46
84
89{
90 VX_ENUM_NN_ROUNDING_TYPE = 0x1A,
91 VX_ENUM_NN_POOLING_TYPE = 0x1B,
92 VX_ENUM_NN_NORMALIZATION_TYPE = 0x1C,
93 VX_ENUM_NN_ACTIVATION_FUNCTION_TYPE = 0x1D,
94};
95
103{
105 VX_NN_DS_SIZE_ROUNDING_FLOOR = VX_ENUM_BASE(VX_ID_KHRONOS, VX_ENUM_NN_ROUNDING_TYPE) + 0x0,
107 VX_NN_DS_SIZE_ROUNDING_CEILING = VX_ENUM_BASE(VX_ID_KHRONOS, VX_ENUM_NN_ROUNDING_TYPE) + 0x1
109
110
116{
118 VX_NN_POOLING_MAX = VX_ENUM_BASE(VX_ID_KHRONOS, VX_ENUM_NN_POOLING_TYPE) + 0x0,
120 VX_NN_POOLING_AVG = VX_ENUM_BASE(VX_ID_KHRONOS, VX_ENUM_NN_POOLING_TYPE) + 0x1
122
123
128{
130 VX_NN_NORMALIZATION_SAME_MAP = VX_ENUM_BASE(VX_ID_KHRONOS, VX_ENUM_NN_NORMALIZATION_TYPE) + 0x0,
132 VX_NN_NORMALIZATION_ACROSS_MAPS = VX_ENUM_BASE(VX_ID_KHRONOS, VX_ENUM_NN_NORMALIZATION_TYPE) + 0x1,
133};
134
135
136
154{
155 VX_NN_ACTIVATION_LOGISTIC = VX_ENUM_BASE(VX_ID_KHRONOS, VX_ENUM_NN_ACTIVATION_FUNCTION_TYPE) + 0x0,
156 VX_NN_ACTIVATION_HYPERBOLIC_TAN = VX_ENUM_BASE(VX_ID_KHRONOS, VX_ENUM_NN_ACTIVATION_FUNCTION_TYPE) + 0x1,
157 VX_NN_ACTIVATION_RELU = VX_ENUM_BASE(VX_ID_KHRONOS, VX_ENUM_NN_ACTIVATION_FUNCTION_TYPE) + 0x2,
158 VX_NN_ACTIVATION_BRELU = VX_ENUM_BASE(VX_ID_KHRONOS, VX_ENUM_NN_ACTIVATION_FUNCTION_TYPE) + 0x3,
159 VX_NN_ACTIVATION_SOFTRELU = VX_ENUM_BASE(VX_ID_KHRONOS, VX_ENUM_NN_ACTIVATION_FUNCTION_TYPE) + 0x4,
160 VX_NN_ACTIVATION_ABS = VX_ENUM_BASE(VX_ID_KHRONOS, VX_ENUM_NN_ACTIVATION_FUNCTION_TYPE) + 0x5,
161 VX_NN_ACTIVATION_SQUARE = VX_ENUM_BASE(VX_ID_KHRONOS, VX_ENUM_NN_ACTIVATION_FUNCTION_TYPE) + 0x6,
162 VX_NN_ACTIVATION_SQRT = VX_ENUM_BASE(VX_ID_KHRONOS, VX_ENUM_NN_ACTIVATION_FUNCTION_TYPE) + 0x7,
163 VX_NN_ACTIVATION_LINEAR = VX_ENUM_BASE(VX_ID_KHRONOS, VX_ENUM_NN_ACTIVATION_FUNCTION_TYPE) + 0x8,
164};
165
166
175
189
190
203
211
212/*==============================================================================
213 NN Nodes
214=============================================================================*/
252VX_API_ENTRY vx_node VX_API_CALL vxConvolutionLayer(vx_graph graph, vx_tensor inputs, vx_tensor weights, vx_tensor biases, const vx_nn_convolution_params_t *convolution_params, vx_size size_of_convolution_params, vx_tensor outputs);
253
280VX_API_ENTRY vx_node VX_API_CALL vxFullyConnectedLayer(vx_graph graph, vx_tensor inputs, vx_tensor weights, vx_tensor biases, vx_enum overflow_policy, vx_enum rounding_policy, vx_tensor outputs);
281
282
307VX_API_ENTRY vx_node VX_API_CALL vxPoolingLayer(vx_graph graph, vx_tensor inputs, vx_enum pooling_type,
308 vx_size pooling_size_x,
309 vx_size pooling_size_y,
310 vx_size pooling_padding_x,
311 vx_size pooling_padding_y,
312 vx_enum rounding,
313 vx_tensor outputs);
314
334VX_API_ENTRY vx_node VX_API_CALL vxSoftmaxLayer(vx_graph graph, vx_tensor inputs, vx_tensor outputs);
335
356 vx_size normalization_size,
357 vx_float32 alpha,
358 vx_float32 beta,
359 vx_float32 bias,
360 vx_tensor outputs);
361
379
399VX_API_ENTRY vx_node VX_API_CALL vxROIPoolingLayer(vx_graph graph, vx_tensor input_data, vx_tensor input_rois, const vx_nn_roi_pool_params_t *roi_pool_params, vx_size size_of_roi_params, vx_tensor output_arr);
400
401
446VX_API_ENTRY vx_node VX_API_CALL vxDeconvolutionLayer(vx_graph graph, vx_tensor inputs, vx_tensor weights, vx_tensor biases, const vx_nn_deconvolution_params_t *deconvolution_params, vx_size size_of_deconv_params, vx_tensor outputs);
447
448
449#ifdef __cplusplus
450}
451#endif
452
453
454#endif
VX_API_ENTRY vx_node VX_API_CALL vxDeconvolutionLayer(vx_graph graph, vx_tensor inputs, vx_tensor weights, vx_tensor biases, const vx_nn_deconvolution_params_t *deconvolution_params, vx_size size_of_deconv_params, vx_tensor outputs)
[Graph] Creates a Convolutional Network Deconvolution Layer Node.
VX_API_ENTRY vx_node VX_API_CALL vxConvolutionLayer(vx_graph graph, vx_tensor inputs, vx_tensor weights, vx_tensor biases, const vx_nn_convolution_params_t *convolution_params, vx_size size_of_convolution_params, vx_tensor outputs)
[Graph] Creates a Convolutional Network Convolution Layer Node.
#define VX_LIBRARY_KHR_NN_EXTENSION
The Neural Network Extension Library Set.
Definition vx_khr_nn.h:45
struct _vx_nn_deconvolution_params_t vx_nn_deconvolution_params_t
Input parameters for a deconvolution operation.
vx_nn_type_e
The type enumeration lists all NN extension types.
Definition vx_khr_nn.h:170
struct _vx_nn_convolution_params_t vx_nn_convolution_params_t
Input parameters for a convolution operation.
struct _vx_nn_roi_pool_params_t vx_nn_roi_pool_params_t
Input parameters for ROI pooling operation.
VX_API_ENTRY vx_node VX_API_CALL vxROIPoolingLayer(vx_graph graph, vx_tensor input_data, vx_tensor input_rois, const vx_nn_roi_pool_params_t *roi_pool_params, vx_size size_of_roi_params, vx_tensor output_arr)
[Graph] Creates a Convolutional Network ROI pooling node
vx_nn_pooling_type_e
The Neural Network pooling type list.
Definition vx_khr_nn.h:116
VX_API_ENTRY vx_node VX_API_CALL vxLocalResponseNormalizationLayer(vx_graph graph, vx_tensor inputs, vx_enum type, vx_size normalization_size, vx_float32 alpha, vx_float32 beta, vx_float32 bias, vx_tensor outputs)
[Graph] Creates a Convolutional Network Local Response Normalization Layer Node. This function is opt...
vx_nn_norm_type_e
The Neural Network normalization type list.
Definition vx_khr_nn.h:128
VX_API_ENTRY vx_node VX_API_CALL vxSoftmaxLayer(vx_graph graph, vx_tensor inputs, vx_tensor outputs)
[Graph] Creates a Convolutional Network Softmax Layer Node.
vx_nn_rounding_type_e
down scale rounding.
Definition vx_khr_nn.h:103
VX_API_ENTRY vx_node VX_API_CALL vxActivationLayer(vx_graph graph, vx_tensor inputs, vx_enum function, vx_float32 a, vx_float32 b, vx_tensor outputs)
[Graph] Creates a Convolutional Network Activation Layer Node. The function operate a specific functi...
VX_API_ENTRY vx_node VX_API_CALL vxFullyConnectedLayer(vx_graph graph, vx_tensor inputs, vx_tensor weights, vx_tensor biases, vx_enum overflow_policy, vx_enum rounding_policy, vx_tensor outputs)
[Graph] Creates a Fully connected Convolutional Network Layer Node.
vx_kernel_nn_ext_e
The list of Neural Network Extension Kernels.
Definition vx_khr_nn.h:50
VX_API_ENTRY vx_node VX_API_CALL vxPoolingLayer(vx_graph graph, vx_tensor inputs, vx_enum pooling_type, vx_size pooling_size_x, vx_size pooling_size_y, vx_size pooling_padding_x, vx_size pooling_padding_y, vx_enum rounding, vx_tensor outputs)
[Graph] Creates a Convolutional Network Pooling Layer Node.
vx_nn_enum_e
NN extension type enums.
Definition vx_khr_nn.h:89
vx_nn_activation_function_e
The Neural Network activation functions list.
Definition vx_khr_nn.h:154
@ VX_TYPE_NN_CONVOLUTION_PARAMS
A vx_nn_convolution_params_t.
Definition vx_khr_nn.h:171
@ VX_TYPE_NN_DECONVOLUTION_PARAMS
A vx_nn_deconvolution_params_t.
Definition vx_khr_nn.h:172
@ VX_TYPE_NN_ROI_POOL_PARAMS
A vx_nn_roi_pool_params_t.
Definition vx_khr_nn.h:173
@ VX_NN_POOLING_MAX
max pooling
Definition vx_khr_nn.h:118
@ VX_NN_POOLING_AVG
average pooling
Definition vx_khr_nn.h:120
@ VX_NN_NORMALIZATION_ACROSS_MAPS
Normalization is done across different IFMs.
Definition vx_khr_nn.h:132
@ VX_NN_NORMALIZATION_SAME_MAP
normalization is done on same IFM
Definition vx_khr_nn.h:130
@ VX_NN_DS_SIZE_ROUNDING_FLOOR
floor rounding
Definition vx_khr_nn.h:105
@ VX_NN_DS_SIZE_ROUNDING_CEILING
ceil rounding
Definition vx_khr_nn.h:107
@ VX_KERNEL_LOCAL_RESPONSE_NORMALIZATION_LAYER
The Neural Network Extension local response normalization Kernel (with bias).
Definition vx_khr_nn.h:82
@ VX_KERNEL_ROI_POOLING_LAYER
The Neural Network POI Pooling Kernel.
Definition vx_khr_nn.h:74
@ VX_KERNEL_DECONVOLUTION_LAYER
The Neural Network Extension Deconvolution Kernel.
Definition vx_khr_nn.h:78
@ VX_KERNEL_CONVOLUTION_LAYER
The Neural Network Extension convolution Kernel.
Definition vx_khr_nn.h:54
@ VX_KERNEL_SOFTMAX_LAYER
The Neural Network Extension softmax Kernel.
Definition vx_khr_nn.h:66
@ VX_KERNEL_FULLY_CONNECTED_LAYER
The Neural Network Extension fully connected Kernel.
Definition vx_khr_nn.h:58
@ VX_KERNEL_POOLING_LAYER
The Neural Network Extension pooling Kernel.
Definition vx_khr_nn.h:62
@ VX_KERNEL_ACTIVATION_LAYER
The Neural Network Extension activation Kernel.
Definition vx_khr_nn.h:70
Input parameters for a convolution operation.
Definition vx_khr_nn.h:180
vx_enum overflow_policy
A VX_TYPE_ENUM of the vx_convert_policy_e enumeration.
Definition vx_khr_nn.h:183
vx_size padding_y
Number of elements added at each side in the y dimension of the input.
Definition vx_khr_nn.h:182
vx_size dilation_y
“inflate” the kernel by inserting zeros between the kernel elements in the y direction....
Definition vx_khr_nn.h:187
vx_enum rounding_policy
A VX_TYPE_ENUM of the vx_round_policy_e enumeration.
Definition vx_khr_nn.h:184
vx_size padding_x
Number of elements added at each side in the x dimension of the input.
Definition vx_khr_nn.h:181
vx_size dilation_x
“inflate” the kernel by inserting zeros between the kernel elements in the x direction....
Definition vx_khr_nn.h:186
vx_enum down_scale_size_rounding
Rounding method for calculating output dimensions. See vx_nn_rounding_type_e
Definition vx_khr_nn.h:185
Input parameters for a deconvolution operation.
Definition vx_khr_nn.h:195
vx_enum rounding_policy
A VX_TYPE_ENUM of the vx_round_policy_e enumeration.
Definition vx_khr_nn.h:199
vx_size padding_y
Number of elements subtracted at each side in the y dimension of the output.
Definition vx_khr_nn.h:197
vx_size a_y
user-specified quantity used to distinguish between the different possible output sizes.
Definition vx_khr_nn.h:201
vx_size padding_x
Number of elements subtracted at each side in the x dimension of the output.
Definition vx_khr_nn.h:196
vx_enum overflow_policy
A VX_TYPE_ENUM of the vx_convert_policy_e enumeration.
Definition vx_khr_nn.h:198
vx_size a_x
user-specified quantity used to distinguish between the different possible output sizes.
Definition vx_khr_nn.h:200
Input parameters for ROI pooling operation.
Definition vx_khr_nn.h:208
vx_enum pool_type
Of type vx_nn_pooling_type_e. Only VX_NN_POOLING_MAX pooling is supported.
Definition vx_khr_nn.h:209
The top level OpenVX Header.
size_t vx_size
A wrapper of size_t to keep the naming convention uniform.
Definition vx_types.h:157
struct _vx_tensor_t * vx_tensor
The multidimensional data object (Tensor).
Definition vx_types.h:287
int32_t vx_enum
Sets the standard enumeration type size to be a fixed quantity.
Definition vx_types.h:152
#define VX_ENUM_BASE(vendor, id)
Defines the manner in which to combine the Vendor and Object IDs to get the base value of the enumera...
Definition vx_types.h:550
struct _vx_graph * vx_graph
An opaque reference to a graph.
Definition vx_types.h:211
struct _vx_node * vx_node
An opaque reference to a kernel node.
Definition vx_types.h:204
#define VX_API_CALL
Defines calling convention for OpenVX API.
Definition vx_types.h:56
#define VX_KERNEL_BASE(vendor, lib)
Defines the manner in which to combine the Vendor and Library IDs to get the base value of the enumer...
Definition vx_types.h:540
float vx_float32
A 32-bit float value.
Definition vx_types.h:129
@ VX_ID_KHRONOS
The Khronos Group.
Definition vx_vendors.h:30