63#include <avr/pgmspace.h>
80 return pgm_read_float_near(p + idx);
269bool noodle_fs_init(uint8_t clk_pin, uint8_t cmd_pin, uint8_t d0_pin);
282bool noodle_fs_init(uint8_t clk_pin, uint8_t cmd_pin, uint8_t d0_pin,
283 uint8_t d1_pin, uint8_t d2_pin, uint8_t d3_pin);
304#if defined(NOODLE_USE_SDFAT)
317bool noodle_fs_init(uint8_t cs_pin, SPIClass &spi, uint8_t sck_mhz);
354 char *buffer,
size_t length);
1004 uint16_t n_channels,
1171 const float *weight,
1197 uint16_t n_filters);
1215 uint16_t n_filters);
1315 float &max_val, uint16_t &max_idx);
1333 const float *gamma,
const float *beta,
1334 const float *mean,
const float *var,
float eps);
1349 const float *bn_params,
float eps);
1367 const float *gamma,
const float *beta,
1368 const float *mean,
const float *var,
float eps);
1383 const float *bn_params,
float eps);
1403 const float *gamma,
const float *beta,
1404 const float *mean,
const float *var,
float eps);
1421 const float *bn_params,
float eps);
1441 const float *gamma,
const float *beta,
1442 const float *mean,
const float *var,
float eps);
1459 const float *bn_params,
float eps);
1478 const float *gamma,
const float *beta,
1479 const float *mean,
const float *var,
float eps);
1496 const float *bn_params,
float eps);
1515 const float *gamma,
const float *beta,
1516 const float *mean,
const float *var,
float eps);
1533 const float *bn_params,
float eps);
uint16_t noodle_conv_float(const char *in_fn, uint16_t n_inputs, uint16_t n_outputs, const char *out_fn, uint16_t W, const Conv &conv, const Pool &pool, CBFPtr progress_cb=0)
Run file-to-file 2D convolution on float input feature maps.
Definition noodle_conv.cpp:507
uint16_t noodle_relu(NoodleBuffer *input_output, uint16_t n)
Apply ReLU in place on a NoodleBuffer.
Definition noodle_math.cpp:433
byte noodle_read_byte(NDL_File &f)
Read a byte using NOODLE_FILE_FORMAT.
Definition noodle_io.cpp:191
uint16_t noodle_bn2d(NoodleBuffer *x, uint16_t C, uint16_t W, const float *gamma, const float *beta, const float *mean, const float *var, float eps)
Apply 2D channel-wise batch normalization in place.
Definition noodle_math.cpp:335
uint16_t noodle_fcn_progmem(NoodleBuffer *input, uint16_t n_inputs, uint16_t n_outputs, NoodleBuffer *output, const float *weight, const float *bias, Activation act, CBFPtr progress_cb=0)
Run a fully connected layer using near-PROGMEM weights.
Definition noodle_fcn.cpp:479
void noodle_write_byte(NDL_File &f, byte d)
Write a byte using NOODLE_FILE_FORMAT.
Definition noodle_io.cpp:213
float * noodle_create_buffer(uint16_t size)
Allocate a raw byte buffer and return it as a float pointer.
Definition noodle_memory.cpp:88
uint16_t noodle_gap(NoodleBuffer *inout, uint16_t C, uint16_t W)
Apply global average pooling in place on packed channel-first maps.
Definition noodle_shape.cpp:141
uint16_t noodle_conv1d(const char *in_fn, uint16_t n_inputs, const char *out_fn, uint16_t n_outputs, uint16_t W, const Conv &conv, const Pool &pool, CBFPtr progress_cb=0)
Run file-to-file 1D convolution with file-backed parameters and pooling.
Definition noodle_conv.cpp:13
uint16_t noodle_bn1d(NoodleBuffer *x, uint16_t N, const float *gamma, const float *beta, const float *mean, const float *var, float eps)
Apply 1D batch normalization in place to a NoodleBuffer vector.
Definition noodle_math.cpp:297
uint16_t noodle_fcn(const int8_t *input, uint16_t n_inputs, uint16_t n_outputs, const char *out_fn, const FCNFile &fcn, CBFPtr progress_cb=0)
Run a fully connected layer from int8 memory to a file.
Definition noodle_fcn.cpp:9
void noodle_delete_file(const char *fn)
Delete a file through the selected filesystem backend.
Definition noodle_io.cpp:223
void(* CBFPtr)(float progress)
Progress callback used by long-running layer routines.
Definition noodle.h:208
void noodle_read_top_line(const char *fn, char *line, size_t maxlen)
Read the first line from a text file.
Definition noodle_io.cpp:8
void noodle_delete_buffer(float *buffer)
Free a buffer allocated by noodle_create_buffer().
Definition noodle_memory.cpp:92
uint16_t noodle_soft_max(NoodleBuffer *input_output, uint16_t n)
Apply numerically stabilized softmax in place on a NoodleBuffer.
Definition noodle_math.cpp:415
uint16_t noodle_logit(NoodleBuffer *input_output, uint16_t n)
Apply logistic sigmoid in place on a NoodleBuffer.
Definition noodle_math.cpp:427
void noodle_write_float(NDL_File &f, float d)
Write a float using NOODLE_FILE_FORMAT.
Definition noodle_io.cpp:204
Activation
Activation applied after bias where supported.
Definition noodle.h:94
void noodle_array_to_file(float *array, const char *fn, uint16_t n)
Write a float array to a file.
Definition noodle_io.cpp:227
float noodle_sigmoidf(float x)
Compute sigmoid for one scalar.
Definition noodle_math.cpp:249
uint16_t noodle_dwconv_float(const char *in_fn, uint16_t n_channels, const char *out_fn, uint16_t W, const Conv &conv, const Pool &pool, CBFPtr progress_cb=0)
Run file-to-file depthwise 2D convolution with file-backed parameters.
Definition noodle_dw.cpp:10
uint16_t noodle_flat(const char *in_fn, NoodleBuffer *output, uint16_t V, uint16_t n_filters)
Flatten a packed file tensor into a NoodleBuffer.
Definition noodle_shape.cpp:102
void noodle_grid_from_file(const char *fn, byte *buffer, uint16_t K)
Read a K x K grid into a byte buffer.
Definition noodle_io.cpp:309
static float noodle_pgm_float(const float *p, uint32_t idx)
Read a float from normal memory or near AVR PROGMEM.
Definition noodle.h:78
bool noodle_fs_init()
Initialize the selected filesystem backend with default settings.
Definition noodle_io.cpp:89
void noodle_setup_temp_buffers(void *b1, void *b2)
Install caller-owned internal scratch buffers.
Definition noodle_memory.cpp:102
float noodle_read_float(NDL_File &f)
Read a float using NOODLE_FILE_FORMAT.
Definition noodle_io.cpp:178
void noodle_find_max(NoodleBuffer *input, uint16_t n, float &max_val, uint16_t &max_idx)
Find the maximum value and its index in a NoodleBuffer vector.
Definition noodle_math.cpp:285
uint16_t noodle_reshape(NoodleBuffer *src_hwc, NoodleBuffer *dst_chw, uint16_t W, uint16_t C)
Convert HWC-like NoodleBuffer data to packed channel-first data.
Definition noodle_shape.cpp:128
uint16_t noodle_sigmoid(NoodleBuffer *input_output, uint16_t n)
Apply sigmoid in place on a NoodleBuffer.
Definition noodle_math.cpp:421
uint16_t noodle_bn(NoodleBuffer *x, uint16_t C, uint16_t W, const float *gamma, const float *beta, const float *mean, const float *var, float eps)
Backward-compatible alias for noodle_bn2d().
Definition noodle_math.cpp:377
void noodle_array_from_file(const char *fn, float *buffer, uint16_t K)
Read a float array from a file.
Definition noodle_io.cpp:293
uint16_t noodle_bn2d_relu(NoodleBuffer *x, uint16_t C, uint16_t W, const float *gamma, const float *beta, const float *mean, const float *var, float eps)
Apply 2D channel-wise batch normalization followed by ReLU.
Definition noodle_math.cpp:356
size_t noodle_read_bytes_until(NDL_File &file, char terminator, char *buffer, size_t length)
Read bytes until a terminator or until the buffer is full.
Definition noodle_io.cpp:28
uint16_t noodle_conv_transpose_float(NoodleBuffer *input, uint16_t n_inputs, uint16_t n_outputs, NoodleBuffer *output, uint16_t W, const ConvMem &conv, CBFPtr progress_cb=0)
Run 2D transpose convolution using memory-backed parameters.
Definition noodle_conv.cpp:1255
uint16_t noodle_conv_byte(const char *in_fn, uint16_t n_inputs, uint16_t n_outputs, const char *out_fn, uint16_t W, const Conv &conv, const Pool &pool, CBFPtr progress_cb=0)
Run file-to-file 2D convolution on byte input feature maps.
Definition noodle_conv.cpp:445
uint16_t noodle_bn_relu(NoodleBuffer *x, uint16_t C, uint16_t W, const float *gamma, const float *beta, const float *mean, const float *var, float eps)
Backward-compatible alias for noodle_bn2d_relu().
Definition noodle_math.cpp:396
void noodle_grid_to_file(byte *grid, const char *fn, uint16_t n)
Write an n x n byte grid to a file in row-major order.
Definition noodle_io.cpp:243
uint16_t noodle_gmp(NoodleBuffer *inout, uint16_t C, uint16_t W)
Apply global max pooling in place on packed channel-first data.
Definition noodle_shape.cpp:146
void noodle_temp_buffers_free(void)
Release automatically allocated internal scratch buffers.
Definition noodle_memory.cpp:75
uint16_t noodle_bn1d_relu(NoodleBuffer *x, uint16_t N, const float *gamma, const float *beta, const float *mean, const float *var, float eps)
Apply 1D batch normalization followed by ReLU in place.
Definition noodle_math.cpp:316
@ ACT_SOFTMAX
Normalize a final output vector where supported.
Definition noodle.h:97
@ ACT_RELU
Clamp negative values to zero.
Definition noodle.h:96
@ ACT_NONE
Do not apply an activation.
Definition noodle.h:95
#define NULL
Definition noodle.h:54
unsigned char byte
Arduino-compatible byte alias for non-Arduino builds.
Definition noodle.h:52
Grow-only float buffers used by NoodleBuffer convolution overloads.
File-backed convolution parameter bundle alias.
Definition noodle.h:134
uint16_t S
Convolution stride.
Definition noodle.h:137
uint16_t OP
User-computed output padding for transpose convolution.
Definition noodle.h:138
const char * weight_fn
Weight filename.
Definition noodle.h:140
uint16_t K
Kernel width, or tap count for 1D convolution.
Definition noodle.h:135
uint16_t P
Padding per side; 65535 requests SAME-style 2D padding.
Definition noodle.h:136
Activation act
Activation applied after adding bias.
Definition noodle.h:143
const char * bias_fn
Bias filename.
Definition noodle.h:141
Memory-backed convolution parameter bundle.
Definition noodle.h:158
Activation act
Activation applied after adding bias.
Definition noodle.h:167
uint16_t P
Padding per side; 65535 requests SAME-style 2D padding.
Definition noodle.h:160
uint16_t K
Kernel width, or tap count for 1D convolution.
Definition noodle.h:159
const float * weight
Pointer to packed weight values.
Definition noodle.h:164
uint16_t OP
User-computed output padding for transpose convolution.
Definition noodle.h:162
uint16_t S
Convolution stride.
Definition noodle.h:161
const float * bias
Pointer to packed bias values, or nullptr.
Definition noodle.h:165
Near-PROGMEM convolution parameter bundle.
Definition noodle.h:177
const float * weight
PROGMEM pointer to packed weights.
Definition noodle.h:183
uint16_t K
Kernel width.
Definition noodle.h:178
uint16_t P
Padding per side; 65535 requests SAME-style 2D padding.
Definition noodle.h:179
uint16_t S
Convolution stride.
Definition noodle.h:180
uint16_t OP
Reserved output padding field for layout parity.
Definition noodle.h:181
Activation act
Activation applied after adding bias.
Definition noodle.h:186
const float * bias
PROGMEM pointer to biases, or nullptr.
Definition noodle.h:184
File-backed convolution parameter bundle.
Definition noodle.h:112
const char * bias_fn
Bias filename.
Definition noodle.h:119
uint16_t S
Convolution stride.
Definition noodle.h:115
uint16_t P
Padding per side; 65535 requests SAME-style 2D padding.
Definition noodle.h:114
uint16_t K
Kernel width, or tap count for 1D convolution.
Definition noodle.h:113
Activation act
Activation applied after adding bias.
Definition noodle.h:121
const char * weight_fn
Weight filename.
Definition noodle.h:118
uint16_t OP
User-computed output padding for transpose convolution.
Definition noodle.h:116
File-backed fully connected parameter bundle alias.
Definition noodle.h:227
const char * weight_fn
Weight filename with [O][I] values.
Definition noodle.h:228
const char * bias_fn
Bias filename with one scalar per output.
Definition noodle.h:229
Activation act
Activation applied after each output.
Definition noodle.h:230
Memory-backed fully connected parameter bundle.
Definition noodle.h:237
Activation act
Activation applied after each output.
Definition noodle.h:240
const float * weight
Pointer to row-major [O][I] weights.
Definition noodle.h:238
const float * bias
Pointer to output biases, or nullptr.
Definition noodle.h:239
Far-PROGMEM fully connected parameter bundle for AVR.
Definition noodle.h:251
uint32_t weight_far
Far flash address of row-major [O][I] weights.
Definition noodle.h:252
uint32_t bias_far
Far flash address of biases, or 0 for zero bias.
Definition noodle.h:253
uint8_t act
Activation mode using Activation values.
Definition noodle.h:254
File-backed fully connected parameter bundle.
Definition noodle.h:217
const char * weight_fn
Weight filename with [O][I] values.
Definition noodle.h:218
const char * bias_fn
Bias filename with one scalar per output.
Definition noodle.h:219
Activation act
Activation applied after each output.
Definition noodle.h:220
Grow-only float buffer managed by Noodle.
Definition noodle_buffer.h:29
Valid-pooling parameter bundle.
Definition noodle.h:198
uint16_t M
Pool window size, M x M for 2D or M samples for 1D.
Definition noodle.h:199
uint16_t T
Pool stride.
Definition noodle.h:200