CMSIS-NN  
CMSIS NN Software Library
 
Loading...
Searching...
No Matches
Fully Connected

Functions

arm_cmsis_nn_status arm_nn_vec_mat_mul_result_acc_s16 (const int16_t *lhs, const int8_t *rhs, const int64_t *effective_bias, int16_t *dst, const int32_t dst_multiplier, const int32_t dst_shift, const int32_t rhs_cols, const int32_t rhs_rows, const int32_t batches, const int32_t batch_offset)
 The result of the multiplication is accumulated to the passed result buffer. Multiplies a matrix by a "batched" vector (i.e. a matrix with a batch dimension composed by input vectors independent from each other).
 
arm_cmsis_nn_status arm_nn_vec_mat_mult_t_per_ch_s8 (const int8_t *lhs, const int8_t *rhs, const int32_t *kernel_sum, const int32_t *bias, int8_t *dst, const int32_t lhs_offset, const int32_t dst_offset, const int32_t *dst_multiplier, const int32_t *dst_shift, const int32_t rhs_cols, const int32_t rhs_rows, const int32_t activation_min, const int32_t activation_max, const int32_t address_offset, const int32_t rhs_offset)
 s8 Vector by Matrix (transposed) multiplication using per channel quantization for output
 
arm_cmsis_nn_status arm_nn_vec_mat_mult_t_s16 (const int16_t *lhs, const int8_t *rhs, const int64_t *bias, int16_t *dst, const int32_t dst_multiplier, const int32_t dst_shift, const int32_t rhs_cols, const int32_t rhs_rows, const int32_t activation_min, const int32_t activation_max)
 s16 Vector by s8 Matrix (transposed) multiplication
 
arm_cmsis_nn_status arm_nn_vec_mat_mult_t_s16_s16 (const int16_t *lhs, const int16_t *rhs, const int64_t *bias, int16_t *dst, const int32_t dst_multiplier, const int32_t dst_shift, const int32_t rhs_cols, const int32_t rhs_rows, const int32_t activation_min, const int32_t activation_max)
 s16 Vector by s16 Matrix (transposed) multiplication
 
arm_cmsis_nn_status arm_nn_vec_mat_mult_t_s4 (const int8_t *lhs, const int8_t *packed_rhs, const int32_t *bias, int8_t *dst, const int32_t lhs_offset, const int32_t dst_offset, const int32_t dst_multiplier, const int32_t dst_shift, const int32_t rhs_cols, const int32_t rhs_rows, const int32_t activation_min, const int32_t activation_max)
 s4 Vector by Matrix (transposed) multiplication
 
arm_cmsis_nn_status arm_nn_vec_mat_mult_t_s8 (const int8_t *lhs, const int8_t *rhs, const int32_t *kernel_sum, const int32_t *bias, int8_t *dst, const int32_t lhs_offset, const int32_t dst_offset, const int32_t dst_multiplier, const int32_t dst_shift, const int32_t rhs_cols, const int32_t rhs_rows, const int32_t activation_min, const int32_t activation_max, const int32_t address_offset, const int32_t rhs_offset)
 s8 Vector by Matrix (transposed) multiplication
 
arm_cmsis_nn_status arm_nn_vec_mat_mult_t_svdf_s8 (const int8_t *lhs, const int8_t *rhs, int16_t *dst, const int32_t lhs_offset, const int32_t dst_offset, const int32_t dst_multiplier, const int32_t dst_shift, const int32_t rhs_cols, const int32_t rhs_rows, const int32_t activation_min, const int32_t activation_max)
 s8 Vector by Matrix (transposed) multiplication with s16 output
 

Description

Support functions for Fully Connected

Function Documentation

◆ arm_nn_vec_mat_mul_result_acc_s16()

arm_cmsis_nn_status arm_nn_vec_mat_mul_result_acc_s16 ( const int16_t *  lhs,
const int8_t *  rhs,
const int64_t *  effective_bias,
int16_t *  dst,
const int32_t  dst_multiplier,
const int32_t  dst_shift,
const int32_t  rhs_cols,
const int32_t  rhs_rows,
const int32_t  batches,
const int32_t  batch_offset 
)

The result of the multiplication is accumulated to the passed result buffer. Multiplies a matrix by a "batched" vector (i.e. a matrix with a batch dimension composed by input vectors independent from each other).

Parameters
[in]lhsBatched vector
[in]rhsWeights - input matrix (H(Rows)xW(Columns))
[in]effective_biasBias + lhs_offset * kernel_sum term precalculated into a constant vector.
[out]dstOutput
[in]dst_multiplierMultiplier for quantization
[in]dst_shiftShift for quantization
[in]rhs_colsVector/matarix column length
[in]rhs_rowsRow count of matrix
[in]batchesBatch size
[in]batch_offsetNumber of timesteps between consecutive batches in input, see arm_nn_lstm_step_s16. Note that the output is always stored with sequential batches.
Returns
The function returns ARM_CMSIS_NN_SUCCESS

◆ arm_nn_vec_mat_mult_t_per_ch_s8()

arm_cmsis_nn_status arm_nn_vec_mat_mult_t_per_ch_s8 ( const int8_t *  lhs,
const int8_t *  rhs,
const int32_t *  kernel_sum,
const int32_t *  bias,
int8_t *  dst,
const int32_t  lhs_offset,
const int32_t  dst_offset,
const int32_t *  dst_multiplier,
const int32_t *  dst_shift,
const int32_t  rhs_cols,
const int32_t  rhs_rows,
const int32_t  activation_min,
const int32_t  activation_max,
const int32_t  address_offset,
const int32_t  rhs_offset 
)

s8 Vector by Matrix (transposed) multiplication using per channel quantization for output

Parameters
[in]lhsInput left-hand side vector
[in]rhsInput right-hand side matrix (transposed)
[in]kernel_sumKernel sums of the kernels (rhs). See arm_vector_sum_s8 for more info.
[in]biasInput bias
[out]dstOutput vector
[in]lhs_offsetOffset to be added to the input values of the left-hand side vector. Range: -127 to 128
[in]dst_offsetOffset to be added to the output values. Range: -127 to 128
[in]dst_multiplierOutput multipliers
[in]dst_shiftOutput shifts
[in]rhs_colsNumber of columns in the right-hand side input matrix
[in]rhs_rowsNumber of rows in the right-hand side input matrix
[in]activation_minMinimum value to clamp the output to. Range: int8
[in]activation_maxMaximum value to clamp the output to. Range: int8
[in]address_offsetMemory position offset for dst. First output is stored at 'dst', the second at 'dst + address_offset' and so on. Default value is typically 1.
[in]rhs_offsetOffset to be added to the input values of the right-hand side vector. Range: -127 to 128
Returns
The function returns ARM_CMSIS_NN_SUCCESS

◆ arm_nn_vec_mat_mult_t_s16()

arm_cmsis_nn_status arm_nn_vec_mat_mult_t_s16 ( const int16_t *  lhs,
const int8_t *  rhs,
const int64_t *  bias,
int16_t *  dst,
const int32_t  dst_multiplier,
const int32_t  dst_shift,
const int32_t  rhs_cols,
const int32_t  rhs_rows,
const int32_t  activation_min,
const int32_t  activation_max 
)

s16 Vector by s8 Matrix (transposed) multiplication

Parameters
[in]lhsInput left-hand side vector
[in]rhsInput right-hand side matrix (transposed)
[in]biasInput bias
[out]dstOutput vector
[in]dst_multiplierOutput multiplier
[in]dst_shiftOutput shift
[in]rhs_colsNumber of columns in the right-hand side input matrix
[in]rhs_rowsNumber of rows in the right-hand side input matrix
[in]activation_minMinimum value to clamp the output to. Range: int16
[in]activation_maxMaximum value to clamp the output to. Range: int16
Returns
The function returns ARM_CMSIS_NN_SUCCESS

◆ arm_nn_vec_mat_mult_t_s16_s16()

arm_cmsis_nn_status arm_nn_vec_mat_mult_t_s16_s16 ( const int16_t *  lhs,
const int16_t *  rhs,
const int64_t *  bias,
int16_t *  dst,
const int32_t  dst_multiplier,
const int32_t  dst_shift,
const int32_t  rhs_cols,
const int32_t  rhs_rows,
const int32_t  activation_min,
const int32_t  activation_max 
)

s16 Vector by s16 Matrix (transposed) multiplication

Parameters
[in]lhsInput left-hand side vector
[in]rhsInput right-hand side matrix (transposed)
[in]biasInput bias
[out]dstOutput vector
[in]dst_multiplierOutput multiplier
[in]dst_shiftOutput shift
[in]rhs_colsNumber of columns in the right-hand side input matrix
[in]rhs_rowsNumber of rows in the right-hand side input matrix
[in]activation_minMinimum value to clamp the output to. Range: int16
[in]activation_maxMaximum value to clamp the output to. Range: int16
Returns
The function returns ARM_CMSIS_NN_SUCCESS

◆ arm_nn_vec_mat_mult_t_s4()

arm_cmsis_nn_status arm_nn_vec_mat_mult_t_s4 ( const int8_t *  lhs,
const int8_t *  packed_rhs,
const int32_t *  bias,
int8_t *  dst,
const int32_t  lhs_offset,
const int32_t  dst_offset,
const int32_t  dst_multiplier,
const int32_t  dst_shift,
const int32_t  rhs_cols,
const int32_t  rhs_rows,
const int32_t  activation_min,
const int32_t  activation_max 
)

s4 Vector by Matrix (transposed) multiplication

Parameters
[in]lhsInput left-hand side vector
[in]packed_rhsInput right-hand side matrix (transposed)
[in]biasInput bias
[out]dstOutput vector
[in]lhs_offsetOffset to be added to the input values of the left-hand side vector. Range: -127 to 128
[in]dst_offsetOffset to be added to the output values. Range: -127 to 128
[in]dst_multiplierOutput multiplier
[in]dst_shiftOutput shift
[in]rhs_colsNumber of columns in the right-hand side input matrix
[in]rhs_rowsNumber of rows in the right-hand side input matrix
[in]activation_minMinimum value to clamp the output to. Range: int8
[in]activation_maxMaximum value to clamp the output to. Range: int8
Returns
The function returns ARM_CMSIS_NN_SUCCESS

◆ arm_nn_vec_mat_mult_t_s8()

arm_cmsis_nn_status arm_nn_vec_mat_mult_t_s8 ( const int8_t *  lhs,
const int8_t *  rhs,
const int32_t *  kernel_sum,
const int32_t *  bias,
int8_t *  dst,
const int32_t  lhs_offset,
const int32_t  dst_offset,
const int32_t  dst_multiplier,
const int32_t  dst_shift,
const int32_t  rhs_cols,
const int32_t  rhs_rows,
const int32_t  activation_min,
const int32_t  activation_max,
const int32_t  address_offset,
const int32_t  rhs_offset 
)

s8 Vector by Matrix (transposed) multiplication

Parameters
[in]lhsInput left-hand side vector
[in]rhsInput right-hand side matrix (transposed)
[in]kernel_sumKernel sums of the kernels (rhs). See arm_vector_sum_s8 for more info.
[in]biasInput bias
[out]dstOutput vector
[in]lhs_offsetOffset to be added to the input values of the left-hand side vector. Range: -127 to 128
[in]dst_offsetOffset to be added to the output values. Range: -127 to 128
[in]dst_multiplierOutput multiplier
[in]dst_shiftOutput shift
[in]rhs_colsNumber of columns in the right-hand side input matrix
[in]rhs_rowsNumber of rows in the right-hand side input matrix
[in]activation_minMinimum value to clamp the output to. Range: int8
[in]activation_maxMaximum value to clamp the output to. Range: int8
[in]address_offsetMemory position offset for dst. First output is stored at 'dst', the second at 'dst + address_offset' and so on. Default value is typically 1.
[in]rhs_offsetOffset to be added to the input values of the right-hand side vector. Range: -127 to 128
Returns
The function returns ARM_CMSIS_NN_SUCCESS

◆ arm_nn_vec_mat_mult_t_svdf_s8()

arm_cmsis_nn_status arm_nn_vec_mat_mult_t_svdf_s8 ( const int8_t *  lhs,
const int8_t *  rhs,
int16_t *  dst,
const int32_t  lhs_offset,
const int32_t  scatter_offset,
const int32_t  dst_multiplier,
const int32_t  dst_shift,
const int32_t  rhs_cols,
const int32_t  rhs_rows,
const int32_t  activation_min,
const int32_t  activation_max 
)

s8 Vector by Matrix (transposed) multiplication with s16 output

Parameters
[in]lhsInput left-hand side vector
[in]rhsInput right-hand side matrix (transposed)
[out]dstOutput vector
[in]lhs_offsetOffset to be added to the input values of the left-hand side vector. Range: -127 to 128
[in]scatter_offsetAddress offset for dst. First output is stored at 'dst', the second at 'dst + scatter_offset' and so on.
[in]dst_multiplierOutput multiplier
[in]dst_shiftOutput shift
[in]rhs_colsNumber of columns in the right-hand side input matrix
[in]rhs_rowsNumber of rows in the right-hand side input matrix
[in]activation_minMinimum value to clamp the output to. Range: int16
[in]activation_maxMaximum value to clamp the output to. Range: int16
Returns
The function returns ARM_CMSIS_NN_SUCCESS