File syn_nn.h¶
FileList > src > syntropic > util > syn_nn.h
Go to the source code of this file
Zero-heap TinyML Neural Network Engine with Attention & Quantization Scaling. More...
#include "syn_qmath.h"#include "syntropic/common/syn_defs.h"#include "syntropic/pt/syn_pt.h"
Classes¶
| Type | Name |
|---|---|
| struct | SYN_NN_Layer Layer Descriptor Struct. |
| struct | SYN_NN_Model Model Descriptor Struct. |
| struct | syn_nn_quant_t Affine Quantization Scaling Parameters (Scale & Zero-Point). |
Public Types¶
| Type | Name |
|---|---|
| enum | SYN_NN_Activation Neural Network Activation Functions. |
| enum | SYN_NN_LayerType Layer Type Enum for Declarative Models. |
Public Functions¶
| Type | Name |
|---|---|
| size_t | syn_nn_argmax_q7 (const q7_t * outputs, size_t num_outputs) Find the class index with the highest output value (ArgMax). |
| SYN_Status | syn_nn_attention_q7 (const q7_t * q, const q7_t * k, const q7_t * v, size_t seq_len, size_t d_k, size_t d_v, q7_t * out, uint8_t attn_shift) INT8 Quantized Scaled Dot-Product Self-Attention Layer. |
| SYN_Status | syn_nn_avgpool1d_q7 (const q7_t * inputs, size_t seq_len, size_t num_channels, q7_t * outputs, size_t pool_size, size_t stride) 1D Average Pooling Layer for INT8 Feature Maps. |
| SYN_PT_Status | syn_nn_conv1d_pt (SYN_PT * pt, const q7_t * inputs, size_t seq_len, size_t num_channels, const q7_t * weights, const q16_t * biases, q7_t * outputs, size_t num_filters, size_t kernel_size, size_t stride, SYN_NN_Activation act, uint8_t out_shift, size_t * current_step, size_t chunk_size) Evaluate a 1D Temporal Convolution layer cooperatively inside a protothread. |
| SYN_Status | syn_nn_conv1d_q7 (const q7_t * inputs, size_t seq_len, size_t num_channels, const q7_t * weights, const q16_t * biases, q7_t * outputs, size_t num_filters, size_t kernel_size, size_t stride, SYN_NN_Activation act, uint8_t out_shift) Evaluate a 1D Temporal Convolutional Neural Network layer in INT8 (q7_t). |
| SYN_Status | syn_nn_conv1d_quant_q7 (const q7_t * inputs, size_t seq_len, size_t num_channels, const q7_t * weights, const q16_t * biases, q7_t * outputs, size_t num_filters, size_t kernel_size, size_t stride, SYN_NN_Activation act, const syn_nn_quant_t * quant) Evaluate a 1D Temporal Convolution layer with affine quantization scaling. |
| SYN_PT_Status | syn_nn_dense_pt (SYN_PT * pt, const q7_t * inputs, size_t num_inputs, const q7_t * weights, const q16_t * biases, q7_t * outputs, size_t num_outputs, SYN_NN_Activation act, uint8_t out_shift, size_t * current_neuron, size_t chunk_size) Evaluate a Dense Neural Network layer cooperatively inside a protothread. |
| SYN_Status | syn_nn_dense_q7 (const q7_t * inputs, size_t num_inputs, const q7_t * weights, const q16_t * biases, q7_t * outputs, size_t num_outputs, SYN_NN_Activation act, uint8_t out_shift) Evaluate a Dense (Fully Connected) Neural Network layer using INT8 (q7_t) weights. |
| SYN_Status | syn_nn_dense_quant_q7 (const q7_t * inputs, size_t num_inputs, const q7_t * weights, const q16_t * biases, q7_t * outputs, size_t num_outputs, SYN_NN_Activation act, const syn_nn_quant_t * quant) Evaluate a Dense layer with affine quantization scaling. |
| SYN_Status | syn_nn_maxpool1d_q7 (const q7_t * inputs, size_t seq_len, size_t num_channels, q7_t * outputs, size_t pool_size, size_t stride) 1D Max Pooling Layer for INT8 Feature Maps. |
| SYN_Status | syn_nn_softmax_q7 (const q7_t * inputs, q7_t * outputs, size_t num_inputs) Compute normalized Softmax probability distribution over input logits in Q7. |
Detailed Description¶
Implements quantized INT8 (q7_t) Dense, Attention, Softmax, and Activation functions with zero dynamic memory allocation.
Public Types Documentation¶
enum SYN_NN_Activation¶
Neural Network Activation Functions.
enum SYN_NN_Activation {
SYN_NN_ACT_NONE = 0,
SYN_NN_ACT_RELU,
SYN_NN_ACT_LEAKY_RELU,
SYN_NN_ACT_SIGMOID,
SYN_NN_ACT_TANH
};
enum SYN_NN_LayerType¶
Layer Type Enum for Declarative Models.
Public Functions Documentation¶
function syn_nn_argmax_q7¶
Find the class index with the highest output value (ArgMax).
Parameters:
outputsPointer to output vector.num_outputsNumber of output elements.
Returns:
Index of maximum value element (0 if num_outputs == 0 or NULL).
function syn_nn_attention_q7¶
INT8 Quantized Scaled Dot-Product Self-Attention Layer.
SYN_Status syn_nn_attention_q7 (
const q7_t * q,
const q7_t * k,
const q7_t * v,
size_t seq_len,
size_t d_k,
size_t d_v,
q7_t * out,
uint8_t attn_shift
)
Computes Attention(Q, K, V) = Softmax( (Q * K^T) >> attn_shift ) * V
Parameters:
qQuery matrix [seq_len * d_k].kKey matrix [seq_len * d_k].vValue matrix [seq_len * d_v].seq_lenSequence length / token count.d_kQuery/Key dimension per token.d_vValue dimension per token.outOutput matrix [seq_len * d_v].attn_shiftRight bit-shift for dot-product scaling.
Returns:
SYN_OK on success, SYN_INVALID_PARAM on failure.
function syn_nn_avgpool1d_q7¶
1D Average Pooling Layer for INT8 Feature Maps.
SYN_Status syn_nn_avgpool1d_q7 (
const q7_t * inputs,
size_t seq_len,
size_t num_channels,
q7_t * outputs,
size_t pool_size,
size_t stride
)
Parameters:
inputsPointer to input feature matrix.seq_lenInput sequence length.num_channelsNumber of feature channels.outputsDestination output matrix.pool_sizePooling window size.strideStride step size.
Returns:
SYN_OK on success, SYN_INVALID_PARAM on failure.
function syn_nn_conv1d_pt¶
Evaluate a 1D Temporal Convolution layer cooperatively inside a protothread.
SYN_PT_Status syn_nn_conv1d_pt (
SYN_PT * pt,
const q7_t * inputs,
size_t seq_len,
size_t num_channels,
const q7_t * weights,
const q16_t * biases,
q7_t * outputs,
size_t num_filters,
size_t kernel_size,
size_t stride,
SYN_NN_Activation act,
uint8_t out_shift,
size_t * current_step,
size_t chunk_size
)
Parameters:
ptPointer to protothread state machine.inputsPointer to input matrix.seq_lenSequence length.num_channelsNumber of input channels.weightsKernel weights matrix.biasesBias vector or NULL.outputsDestination output matrix.num_filtersNumber of output filters.kernel_sizeKernel window size.strideStride step.actActivation function.out_shiftRight bit-shift scaling factor.current_stepState variable tracking step progress across yields.chunk_sizeNumber of output steps to evaluate per tick.
Returns:
SYN_PT_YIELDING while evaluating, SYN_PT_ENDED on completion.
function syn_nn_conv1d_q7¶
Evaluate a 1D Temporal Convolutional Neural Network layer in INT8 (q7_t).
SYN_Status syn_nn_conv1d_q7 (
const q7_t * inputs,
size_t seq_len,
size_t num_channels,
const q7_t * weights,
const q16_t * biases,
q7_t * outputs,
size_t num_filters,
size_t kernel_size,
size_t stride,
SYN_NN_Activation act,
uint8_t out_shift
)
Scans a 1D kernel filter matrix [num_filters * kernel_size * num_channels] across a time series [seq_len * num_channels].
Parameters:
inputsPointer to input matrix [seq_len * num_channels].seq_lenInput sequence length (time steps).num_channelsNumber of input channels/features per time step.weightsFlat kernel weights matrix [num_filters * kernel_size * num_channels].biasesBias vector of length num_filters in Q16 (or NULL).outputsDestination output matrix [out_steps * num_filters].num_filtersNumber of output filters/channels.kernel_sizeSize of 1D sliding window kernel.strideStride step across time steps.actActivation function to apply to output filters.out_shiftRight bit-shift scaling factor (0 to 15) to prevent overflow.
Returns:
SYN_OK on success, SYN_INVALID_PARAM on failure.
function syn_nn_conv1d_quant_q7¶
Evaluate a 1D Temporal Convolution layer with affine quantization scaling.
SYN_Status syn_nn_conv1d_quant_q7 (
const q7_t * inputs,
size_t seq_len,
size_t num_channels,
const q7_t * weights,
const q16_t * biases,
q7_t * outputs,
size_t num_filters,
size_t kernel_size,
size_t stride,
SYN_NN_Activation act,
const syn_nn_quant_t * quant
)
Parameters:
inputsPointer to input matrix.seq_lenSequence length.num_channelsNumber of input channels.weightsKernel weights matrix.biasesBias vector or NULL.outputsDestination output matrix.num_filtersNumber of output filters.kernel_sizeKernel window size.strideStride step.actActivation function.quantPointer to affine quantization scaling parameters.
Returns:
SYN_OK on success, SYN_INVALID_PARAM on failure.
function syn_nn_dense_pt¶
Evaluate a Dense Neural Network layer cooperatively inside a protothread.
SYN_PT_Status syn_nn_dense_pt (
SYN_PT * pt,
const q7_t * inputs,
size_t num_inputs,
const q7_t * weights,
const q16_t * biases,
q7_t * outputs,
size_t num_outputs,
SYN_NN_Activation act,
uint8_t out_shift,
size_t * current_neuron,
size_t chunk_size
)
Parameters:
ptPointer to protothread state machine.inputsPointer to input vector.num_inputsNumber of input features.weightsFlat weight matrix.biasesBias vector or NULL.outputsDestination output vector.num_outputsNumber of output neurons.actActivation function to apply.out_shiftRight bit-shift scaling factor.current_neuronState variable tracking progress across yields.chunk_sizeNumber of neurons to evaluate per protothread tick.
Returns:
SYN_PT_YIELDING while evaluating, SYN_PT_ENDED on completion.
function syn_nn_dense_q7¶
Evaluate a Dense (Fully Connected) Neural Network layer using INT8 (q7_t) weights.
SYN_Status syn_nn_dense_q7 (
const q7_t * inputs,
size_t num_inputs,
const q7_t * weights,
const q16_t * biases,
q7_t * outputs,
size_t num_outputs,
SYN_NN_Activation act,
uint8_t out_shift
)
Computes: Output[i] = Activation( ((Sum(Input[j] * Weight[i][j]) + Bias[i]) >> out_shift) )
Parameters:
inputsPointer to input vector (length = num_inputs).num_inputsNumber of input features.weightsFlat weight matrix [num_outputs * num_inputs].biasesBias vector of length num_outputs in Q16.16 (or NULL).outputsDestination buffer for outputs (length = num_outputs).num_outputsNumber of output neurons in layer.actActivation function to apply.out_shiftRight bit-shift scaling factor (0 to 15) to prevent overflow.
Returns:
SYN_OK on success, SYN_INVALID_PARAM on failure.
function syn_nn_dense_quant_q7¶
Evaluate a Dense layer with affine quantization scaling.
SYN_Status syn_nn_dense_quant_q7 (
const q7_t * inputs,
size_t num_inputs,
const q7_t * weights,
const q16_t * biases,
q7_t * outputs,
size_t num_outputs,
SYN_NN_Activation act,
const syn_nn_quant_t * quant
)
Parameters:
inputsPointer to input vector.num_inputsNumber of input features.weightsFlat weight matrix.biasesBias vector or NULL.outputsDestination output vector.num_outputsNumber of output neurons.actActivation function.quantPointer to affine quantization scaling parameters.
Returns:
SYN_OK on success, SYN_INVALID_PARAM on failure.
function syn_nn_maxpool1d_q7¶
1D Max Pooling Layer for INT8 Feature Maps.
SYN_Status syn_nn_maxpool1d_q7 (
const q7_t * inputs,
size_t seq_len,
size_t num_channels,
q7_t * outputs,
size_t pool_size,
size_t stride
)
Parameters:
inputsPointer to input feature matrix.seq_lenInput sequence length.num_channelsNumber of feature channels.outputsDestination output matrix.pool_sizePooling window size.strideStride step size.
Returns:
SYN_OK on success, SYN_INVALID_PARAM on failure.
function syn_nn_softmax_q7¶
Compute normalized Softmax probability distribution over input logits in Q7.
Output values sum to 127 (+1.0 in Q7).
Parameters:
inputsPointer to logit input vector.outputsPointer to destination probability vector.num_inputsNumber of features / classes.
Returns:
SYN_OK on success, SYN_INVALID_PARAM on failure.
The documentation for this class was generated from the following file src/syntropic/util/syn_nn.h