Skip to content
heliaCORE
API reference
HELIA HUB

Fully-connected Layer Functions

Collection of fully-connected and matrix multiplication functions.

Fully-connected layer is basically a matrix-vector multiplication with bias. The matrix is the weights and the input/output vectors are the activation values. Supported {weight, activation} precisions include {8-bit, 8-bit} and {8-bit, 16-bit}

Machine-readable model

function

Fully connected layer, NHWC layout.

Include/arm_nnfunctions_flt.h:1056

arm_cmsis_nn_status arm_fully_connected_nhwc_f32(
const cmsis_nn_context *ctx,
const cmsis_nn_fc_params_f32 *fc_params,
const cmsis_nn_dims *input_dims,
const float32_t *input,
const cmsis_nn_dims *filter_dims,
const float32_t *kernel,
const cmsis_nn_dims *bias_dims,
const float32_t *bias,
const cmsis_nn_dims *output_dims,
float32_t *output
)

Fully connected layer, NHWC layout.

Parameters of arm_fully_connected_nhwc_f32
NameTypeDirectionDescription
ctxconst cmsis_nn_context *inFunction context. Unused; may be NULL.
fc_paramsconst cmsis_nn_fc_params_f32 *inFully connected parameters and activation clamp.
input_dimsconst cmsis_nn_dims *inInput tensor dimensions.
inputconst float32_t *inPointer to the input tensor data.
filter_dimsconst cmsis_nn_dims *inFilter tensor dimensions.
kernelconst float32_t *inPointer to the filter tensor data.
bias_dimsconst cmsis_nn_dims *inBias tensor dimensions.
biasconst float32_t *inOptional bias tensor data.
output_dimsconst cmsis_nn_dims *inOutput tensor dimensions.
outputfloat32_t *outPointer to the output tensor data.
Returns of arm_fully_connected_nhwc_f32
Description
`ARM_CMSIS_NN_SUCCESS` on success or `ARM_CMSIS_NN_ARG_ERROR` on invalid arguments.
function

Fully connected layer, dispatch by layout.

Include/arm_nnfunctions_flt.h:1084

arm_cmsis_nn_status arm_fully_connected_f32(
const cmsis_nn_context *ctx,
const cmsis_nn_fc_params_f32 *fc_params,
const cmsis_nn_dims *input_dims,
const float32_t *input,
const cmsis_nn_dims *filter_dims,
const float32_t *kernel,
const cmsis_nn_dims *bias_dims,
const float32_t *bias,
const cmsis_nn_dims *output_dims,
float32_t *output,
arm_nn_tensor_layout layout
)

Fully connected layer, dispatch by layout.

Parameters of arm_fully_connected_f32
NameTypeDirectionDescription
ctxconst cmsis_nn_context *inFunction context. Unused; may be NULL.
fc_paramsconst cmsis_nn_fc_params_f32 *inFully connected parameters and activation clamp.
input_dimsconst cmsis_nn_dims *inInput tensor dimensions.
inputconst float32_t *inPointer to the input tensor data.
filter_dimsconst cmsis_nn_dims *inFilter tensor dimensions.
kernelconst float32_t *inPointer to the filter tensor data.
bias_dimsconst cmsis_nn_dims *inBias tensor dimensions.
biasconst float32_t *inOptional bias tensor data.
output_dimsconst cmsis_nn_dims *inOutput tensor dimensions.
outputfloat32_t *outPointer to the output tensor data.
layoutarm_nn_tensor_layoutinTensor layout selector. Current float APIs require `ARM_NN_LAYOUT_NHWC`.
Returns of arm_fully_connected_f32
Description
`ARM_CMSIS_NN_SUCCESS` on success or `ARM_CMSIS_NN_ARG_ERROR` on invalid arguments.
function

Get the temporary buffer size required by the fully connected layer.

Include/arm_nnfunctions_flt.h:1107

int32_t arm_fully_connected_f32_get_buffer_size(
const cmsis_nn_fc_params_f32 *fc_params,
const cmsis_nn_dims *input_dims,
const cmsis_nn_dims *filter_dims,
const cmsis_nn_dims *output_dims,
arm_nn_tensor_layout layout
)

Get the temporary buffer size required by the fully connected layer.

Parameters of arm_fully_connected_f32_get_buffer_size
NameTypeDirectionDescription
fc_paramsconst cmsis_nn_fc_params_f32 *inFully connected parameters.
input_dimsconst cmsis_nn_dims *inInput tensor dimensions.
filter_dimsconst cmsis_nn_dims *inFilter tensor dimensions.
output_dimsconst cmsis_nn_dims *inOutput tensor dimensions.
layoutarm_nn_tensor_layoutinTensor layout selector.
Returns of arm_fully_connected_f32_get_buffer_size
Description
Required buffer size in bytes, or 0 when no scratch buffer is needed.
function

Batched matrix multiplication.

Include/arm_nnfunctions_flt.h:1491

arm_cmsis_nn_status arm_batch_matmul_f32(
const cmsis_nn_context *ctx,
const cmsis_nn_bmm_params_f32 *bmm_params,
const cmsis_nn_dims *input_lhs_dims,
const float32_t *input_lhs,
const cmsis_nn_dims *input_rhs_dims,
const float32_t *input_rhs,
const cmsis_nn_dims *output_dims,
float32_t *output
)

Batched matrix multiplication.

Parameters of arm_batch_matmul_f32
NameTypeDirectionDescription
ctxconst cmsis_nn_context *in, outFunction context that may hold a temporary scratch buffer.
bmm_paramsconst cmsis_nn_bmm_params_f32 *inBatch matmul parameters and activation clamp.
input_lhs_dimsconst cmsis_nn_dims *inLeft-hand-side input tensor dimensions.
input_lhsconst float32_t *inPointer to the left-hand-side input tensor.
input_rhs_dimsconst cmsis_nn_dims *inRight-hand-side input tensor dimensions.
input_rhsconst float32_t *inPointer to the right-hand-side input tensor. With `ARM_NN_WEIGHT_FORMAT_NT_N_PACKED` each `[K, N]` matrix occupies `K * ceil(N / block) * block` elements (block is 4 for float32, 8 for float16) and consecutive batch matrices are stored back to back at that stride.
output_dimsconst cmsis_nn_dims *inOutput tensor dimensions.
outputfloat32_t *outPointer to the output tensor.
Returns of arm_batch_matmul_f32
Description
`ARM_CMSIS_NN_SUCCESS` on success or `ARM_CMSIS_NN_ARG_ERROR` on invalid arguments.
function

Get the temporary buffer size required by batched matrix multiplication.

Include/arm_nnfunctions_flt.h:1510

int32_t arm_batch_matmul_f32_get_buffer_size(
const cmsis_nn_bmm_params_f32 *bmm_params,
const cmsis_nn_dims *input_lhs_dims,
const cmsis_nn_dims *input_rhs_dims,
const cmsis_nn_dims *output_dims
)

Get the temporary buffer size required by batched matrix multiplication.

Parameters of arm_batch_matmul_f32_get_buffer_size
NameTypeDirectionDescription
bmm_paramsconst cmsis_nn_bmm_params_f32 *inBatch matmul parameters.
input_lhs_dimsconst cmsis_nn_dims *inLeft-hand-side input tensor dimensions.
input_rhs_dimsconst cmsis_nn_dims *inRight-hand-side input tensor dimensions.
output_dimsconst cmsis_nn_dims *inOutput tensor dimensions.
Returns of arm_batch_matmul_f32_get_buffer_size
Description
Required buffer size in bytes, or 0 when no scratch buffer is needed.
function

Fully connected layer, NHWC layout.

Include/arm_nnfunctions_flt.h:3067

arm_cmsis_nn_status arm_fully_connected_nhwc_f16(
const cmsis_nn_context *ctx,
const cmsis_nn_fc_params_f16 *fc_params,
const cmsis_nn_dims *input_dims,
const float16_t *input,
const cmsis_nn_dims *filter_dims,
const float16_t *kernel,
const cmsis_nn_dims *bias_dims,
const float16_t *bias,
const cmsis_nn_dims *output_dims,
float16_t *output
)

Fully connected layer, NHWC layout.

Parameters of arm_fully_connected_nhwc_f16
NameTypeDirectionDescription
ctxconst cmsis_nn_context *inFunction context. Unused; may be NULL.
fc_paramsconst cmsis_nn_fc_params_f16 *inFully connected parameters and activation clamp.
input_dimsconst cmsis_nn_dims *inInput tensor dimensions.
inputconst float16_t *inPointer to the input tensor data.
filter_dimsconst cmsis_nn_dims *inFilter tensor dimensions.
kernelconst float16_t *inPointer to the filter tensor data.
bias_dimsconst cmsis_nn_dims *inBias tensor dimensions.
biasconst float16_t *inOptional bias tensor data.
output_dimsconst cmsis_nn_dims *inOutput tensor dimensions.
outputfloat16_t *outPointer to the output tensor data.
Returns of arm_fully_connected_nhwc_f16
Description
`ARM_CMSIS_NN_SUCCESS` on success or `ARM_CMSIS_NN_ARG_ERROR` on invalid arguments.
function

Fully connected layer, NHWC layout.

Include/arm_nnfunctions_flt.h:3086

arm_cmsis_nn_status arm_fully_connected_nhwc_f16_acc16(
const cmsis_nn_context *ctx,
const cmsis_nn_fc_params_f16 *fc_params,
const cmsis_nn_dims *input_dims,
const float16_t *input,
const cmsis_nn_dims *filter_dims,
const float16_t *kernel,
const cmsis_nn_dims *bias_dims,
const float16_t *bias,
const cmsis_nn_dims *output_dims,
float16_t *output
)

Fully connected layer, NHWC layout.

Parameters of arm_fully_connected_nhwc_f16_acc16
NameTypeDirectionDescription
ctxconst cmsis_nn_context *inFunction context. Unused; may be NULL.
fc_paramsconst cmsis_nn_fc_params_f16 *inFully connected parameters and activation clamp.
input_dimsconst cmsis_nn_dims *inInput tensor dimensions.
inputconst float16_t *inPointer to the input tensor data.
filter_dimsconst cmsis_nn_dims *inFilter tensor dimensions.
kernelconst float16_t *inPointer to the filter tensor data.
bias_dimsconst cmsis_nn_dims *inBias tensor dimensions.
biasconst float16_t *inOptional bias tensor data.
output_dimsconst cmsis_nn_dims *inOutput tensor dimensions.
outputfloat16_t *outPointer to the output tensor data.
Returns of arm_fully_connected_nhwc_f16_acc16
Description
`ARM_CMSIS_NN_SUCCESS` on success or `ARM_CMSIS_NN_ARG_ERROR` on invalid arguments.
function

Fully connected layer, dispatch by layout.

Include/arm_nnfunctions_flt.h:3110

arm_cmsis_nn_status arm_fully_connected_f16(
const cmsis_nn_context *ctx,
const cmsis_nn_fc_params_f16 *fc_params,
const cmsis_nn_dims *input_dims,
const float16_t *input,
const cmsis_nn_dims *filter_dims,
const float16_t *kernel,
const cmsis_nn_dims *bias_dims,
const float16_t *bias,
const cmsis_nn_dims *output_dims,
float16_t *output,
arm_nn_tensor_layout layout
)

Fully connected layer, dispatch by layout.

Parameters of arm_fully_connected_f16
NameTypeDirectionDescription
ctxconst cmsis_nn_context *inFunction context. Unused; may be NULL.
fc_paramsconst cmsis_nn_fc_params_f16 *inFully connected parameters and activation clamp.
input_dimsconst cmsis_nn_dims *inInput tensor dimensions.
inputconst float16_t *inPointer to the input tensor data.
filter_dimsconst cmsis_nn_dims *inFilter tensor dimensions.
kernelconst float16_t *inPointer to the filter tensor data.
bias_dimsconst cmsis_nn_dims *inBias tensor dimensions.
biasconst float16_t *inOptional bias tensor data.
output_dimsconst cmsis_nn_dims *inOutput tensor dimensions.
outputfloat16_t *outPointer to the output tensor data.
layoutarm_nn_tensor_layoutinTensor layout selector. Current float APIs require `ARM_NN_LAYOUT_NHWC`.
Returns of arm_fully_connected_f16
Description
`ARM_CMSIS_NN_SUCCESS` on success or `ARM_CMSIS_NN_ARG_ERROR` on invalid arguments.
function

Fully connected layer, dispatch by layout.

Include/arm_nnfunctions_flt.h:3130

arm_cmsis_nn_status arm_fully_connected_f16_acc16(
const cmsis_nn_context *ctx,
const cmsis_nn_fc_params_f16 *fc_params,
const cmsis_nn_dims *input_dims,
const float16_t *input,
const cmsis_nn_dims *filter_dims,
const float16_t *kernel,
const cmsis_nn_dims *bias_dims,
const float16_t *bias,
const cmsis_nn_dims *output_dims,
float16_t *output,
arm_nn_tensor_layout layout
)

Fully connected layer, dispatch by layout.

Parameters of arm_fully_connected_f16_acc16
NameTypeDirectionDescription
ctxconst cmsis_nn_context *inFunction context. Unused; may be NULL.
fc_paramsconst cmsis_nn_fc_params_f16 *inFully connected parameters and activation clamp.
input_dimsconst cmsis_nn_dims *inInput tensor dimensions.
inputconst float16_t *inPointer to the input tensor data.
filter_dimsconst cmsis_nn_dims *inFilter tensor dimensions.
kernelconst float16_t *inPointer to the filter tensor data.
bias_dimsconst cmsis_nn_dims *inBias tensor dimensions.
biasconst float16_t *inOptional bias tensor data.
output_dimsconst cmsis_nn_dims *inOutput tensor dimensions.
outputfloat16_t *outPointer to the output tensor data.
layoutarm_nn_tensor_layoutinTensor layout selector. Current float APIs require `ARM_NN_LAYOUT_NHWC`.
Returns of arm_fully_connected_f16_acc16
Description
`ARM_CMSIS_NN_SUCCESS` on success or `ARM_CMSIS_NN_ARG_ERROR` on invalid arguments.
function

Get the temporary buffer size required by the fully connected layer.

Include/arm_nnfunctions_flt.h:3145

int32_t arm_fully_connected_f16_get_buffer_size(
const cmsis_nn_fc_params_f16 *fc_params,
const cmsis_nn_dims *input_dims,
const cmsis_nn_dims *filter_dims,
const cmsis_nn_dims *output_dims,
arm_nn_tensor_layout layout
)

Get the temporary buffer size required by the fully connected layer.

Parameters of arm_fully_connected_f16_get_buffer_size
NameTypeDirectionDescription
fc_paramsconst cmsis_nn_fc_params_f16 *inFully connected parameters.
input_dimsconst cmsis_nn_dims *inInput tensor dimensions.
filter_dimsconst cmsis_nn_dims *inFilter tensor dimensions.
output_dimsconst cmsis_nn_dims *inOutput tensor dimensions.
layoutarm_nn_tensor_layoutinTensor layout selector.
Returns of arm_fully_connected_f16_get_buffer_size
Description
Required buffer size in bytes, or 0 when no scratch buffer is needed.
function

Batched matrix multiplication.

Include/arm_nnfunctions_flt.h:3327

arm_cmsis_nn_status arm_batch_matmul_f16(
const cmsis_nn_context *ctx,
const cmsis_nn_bmm_params_f16 *bmm_params,
const cmsis_nn_dims *input_lhs_dims,
const float16_t *input_lhs,
const cmsis_nn_dims *input_rhs_dims,
const float16_t *input_rhs,
const cmsis_nn_dims *output_dims,
float16_t *output
)

Batched matrix multiplication.

Parameters of arm_batch_matmul_f16
NameTypeDirectionDescription
ctxconst cmsis_nn_context *in, outFunction context that may hold a temporary scratch buffer.
bmm_paramsconst cmsis_nn_bmm_params_f16 *inBatch matmul parameters and activation clamp.
input_lhs_dimsconst cmsis_nn_dims *inLeft-hand-side input tensor dimensions.
input_lhsconst float16_t *inPointer to the left-hand-side input tensor.
input_rhs_dimsconst cmsis_nn_dims *inRight-hand-side input tensor dimensions.
input_rhsconst float16_t *inPointer to the right-hand-side input tensor. With `ARM_NN_WEIGHT_FORMAT_NT_N_PACKED` each `[K, N]` matrix occupies `K * ceil(N / block) * block` elements (block is 4 for float32, 8 for float16) and consecutive batch matrices are stored back to back at that stride.
output_dimsconst cmsis_nn_dims *inOutput tensor dimensions.
outputfloat16_t *outPointer to the output tensor.
Returns of arm_batch_matmul_f16
Description
`ARM_CMSIS_NN_SUCCESS` on success or `ARM_CMSIS_NN_ARG_ERROR` on invalid arguments.
function

Get the temporary buffer size required by batched matrix multiplication.

Include/arm_nnfunctions_flt.h:3339

int32_t arm_batch_matmul_f16_get_buffer_size(
const cmsis_nn_bmm_params_f16 *bmm_params,
const cmsis_nn_dims *input_lhs_dims,
const cmsis_nn_dims *input_rhs_dims,
const cmsis_nn_dims *output_dims
)

Get the temporary buffer size required by batched matrix multiplication.

Parameters of arm_batch_matmul_f16_get_buffer_size
NameTypeDirectionDescription
bmm_paramsconst cmsis_nn_bmm_params_f16 *inBatch matmul parameters.
input_lhs_dimsconst cmsis_nn_dims *inLeft-hand-side input tensor dimensions.
input_rhs_dimsconst cmsis_nn_dims *inRight-hand-side input tensor dimensions.
output_dimsconst cmsis_nn_dims *inOutput tensor dimensions.
Returns of arm_batch_matmul_f16_get_buffer_size
Description
Required buffer size in bytes, or 0 when no scratch buffer is needed.