Noodle
Loading...
Searching...
No Matches
noodle.h
Go to the documentation of this file.
1
31
36
41
42#pragma once
43
44#include <stdint.h>
45#include <stddef.h>
46
47#ifdef ARDUINO
48#include <Arduino.h>
49#endif
50
51#ifndef ARDUINO
52typedef unsigned char byte;
53#ifndef NULL
54#define NULL 0
55#endif
56#endif
57
58#include "noodle_config.h"
59#include "noodle_fs.h"
60#include "noodle_buffer.h"
61
62#if defined(__AVR__)
63#include <avr/pgmspace.h>
64#endif
65
78static inline float noodle_pgm_float(const float *p, uint32_t idx) {
79#if defined(__AVR__)
80 return pgm_read_float_near(p + idx);
81#else
82 return p[idx];
83#endif
84}
85
86// ============================================================
87// Public types
88// ============================================================
89
94enum Activation : uint8_t {
98};
99
112struct Conv {
113 uint16_t K = 3;
114 uint16_t P = 0;
115 uint16_t S = 1;
116 uint16_t OP = 0;
117
118 const char *weight_fn = nullptr;
119 const char *bias_fn = nullptr;
120
122};
123
134struct ConvFile {
135 uint16_t K = 3;
136 uint16_t P = 0;
137 uint16_t S = 1;
138 uint16_t OP = 0;
139
140 const char *weight_fn = nullptr;
141 const char *bias_fn = nullptr;
142
144};
145
158struct ConvMem {
159 uint16_t K = 3;
160 uint16_t P = 0;
161 uint16_t S = 1;
162 uint16_t OP = 0;
163
164 const float *weight = nullptr;
165 const float *bias = nullptr;
166
168};
169
178 uint16_t K = 3;
179 uint16_t P = 0;
180 uint16_t S = 1;
181 uint16_t OP = 0;
182
183 const float *weight = nullptr;
184 const float *bias = nullptr;
185
187};
188
198struct Pool {
199 uint16_t M = 1;
200 uint16_t T = 1;
201};
202
208typedef void (*CBFPtr)(float progress);
209
217struct FCN {
218 const char *weight_fn = nullptr;
219 const char *bias_fn = nullptr;
221};
222
227struct FCNFile {
228 const char *weight_fn = nullptr;
229 const char *bias_fn = nullptr;
231};
232
237struct FCNMem {
238 const float *weight = nullptr;
239 const float *bias = nullptr;
241};
242
252 uint32_t weight_far = 0;
253 uint32_t bias_far = 0;
254 uint8_t act = ACT_RELU;
255};
256
257// ============================================================
258// Filesystem and scalar I/O
259// ============================================================
260
269bool noodle_fs_init(uint8_t clk_pin, uint8_t cmd_pin, uint8_t d0_pin);
270
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);
284
290bool noodle_fs_init();
291
302bool noodle_fs_init(uint8_t cs_pin);
303
304#if defined(NOODLE_USE_SDFAT)
317bool noodle_fs_init(uint8_t cs_pin, SPIClass &spi, uint8_t sck_mhz);
318#endif
319
331void noodle_read_top_line(const char *fn, char *line, size_t maxlen);
332
338void noodle_delete_file(const char *fn);
339
353size_t noodle_read_bytes_until(NDL_File &file, char terminator,
354 char *buffer, size_t length);
355
362void noodle_write_float(NDL_File &f, float d);
363
370float noodle_read_float(NDL_File &f);
371
378byte noodle_read_byte(NDL_File &f);
379
386void noodle_write_byte(NDL_File &f, byte d);
387
388// ============================================================
389// Legacy/manual scratch buffers
390// ============================================================
391
403void noodle_setup_temp_buffers(void *b1, void *b2);
404
413void noodle_setup_temp_buffers(void *b2);
414
422void noodle_temp_buffers_free(void);
423
424// ============================================================
425// Simple utility I/O
426// ============================================================
427
437float *noodle_create_buffer(uint16_t size);
438
444void noodle_delete_buffer(float *buffer);
445
453void noodle_array_to_file(float *array, const char *fn, uint16_t n);
454
462void noodle_grid_to_file(byte *grid, const char *fn, uint16_t n);
463
471void noodle_grid_to_file(float *grid, const char *fn, uint16_t n);
472
480void noodle_array_from_file(const char *fn, float *buffer, uint16_t K);
481
489void noodle_grid_from_file(const char *fn, byte *buffer, uint16_t K);
490
498void noodle_grid_from_file(const char *fn, int8_t *buffer, uint16_t K);
499
507void noodle_grid_from_file(const char *fn, float *buffer, uint16_t K);
508
509// ============================================================
510// Public file-backed layer API
511// ============================================================
512
521
538uint16_t noodle_conv_byte(const char *in_fn,
539 uint16_t n_inputs,
540 uint16_t n_outputs,
541 const char *out_fn,
542 uint16_t W,
543 const Conv &conv,
544 const Pool &pool,
545 CBFPtr progress_cb = NULL);
546
563uint16_t noodle_conv_float(const char *in_fn,
564 uint16_t n_inputs,
565 uint16_t n_outputs,
566 const char *out_fn,
567 uint16_t W,
568 const Conv &conv,
569 const Pool &pool,
570 CBFPtr progress_cb = NULL);
571
588uint16_t noodle_conv_float(const char *in_fn,
589 uint16_t n_inputs,
590 uint16_t n_outputs,
591 const char *out_fn,
592 uint16_t W,
593 const ConvMem &conv,
594 const Pool &pool,
595 CBFPtr progress_cb = NULL);
596
613uint16_t noodle_conv_float(const char *in_fn,
614 uint16_t n_inputs,
615 uint16_t n_outputs,
616 const char *out_fn,
617 uint16_t W,
618 const ConvProgmem &conv,
619 const Pool &pool,
620 CBFPtr progress_cb = NULL);
621
638uint16_t noodle_conv1d(const char *in_fn,
639 uint16_t n_inputs,
640 const char *out_fn,
641 uint16_t n_outputs,
642 uint16_t W,
643 const Conv &conv,
644 const Pool &pool,
645 CBFPtr progress_cb = NULL);
646
662uint16_t noodle_conv1d(const char *in_fn,
663 uint16_t n_inputs,
664 const char *out_fn,
665 uint16_t n_outputs,
666 uint16_t W,
667 const Conv &conv,
668 CBFPtr progress_cb = NULL);
669
686uint16_t noodle_conv1d(const char *in_fn,
687 uint16_t n_inputs,
688 const char *out_fn,
689 uint16_t n_outputs,
690 uint16_t W,
691 const ConvMem &conv,
692 CBFPtr progress_cb = NULL);
693
710uint16_t noodle_dwconv_float(const char *in_fn,
711 uint16_t n_channels,
712 const char *out_fn,
713 uint16_t W,
714 const Conv &conv,
715 const Pool &pool,
716 CBFPtr progress_cb = NULL);
717
733uint16_t noodle_dwconv_float(const char *in_fn,
734 uint16_t n_channels,
735 const char *out_fn,
736 uint16_t W,
737 const ConvProgmem &conv,
738 const Pool &pool,
739 CBFPtr progress_cb = NULL);
740
755uint16_t noodle_fcn(const int8_t *input,
756 uint16_t n_inputs,
757 uint16_t n_outputs,
758 const char *out_fn,
759 const FCNFile &fcn,
760 CBFPtr progress_cb = NULL);
761
776uint16_t noodle_fcn(const byte *input,
777 uint16_t n_inputs,
778 uint16_t n_outputs,
779 const char *out_fn,
780 const FCNFile &fcn,
781 CBFPtr progress_cb = NULL);
782
798uint16_t noodle_fcn(const char *in_fn,
799 uint16_t n_inputs,
800 uint16_t n_outputs,
801 const char *out_fn,
802 const FCNFile &fcn,
803 CBFPtr progress_cb = NULL);
804
805// ============================================================
806// Public NoodleBuffer RAM-to-RAM layer API
807// ============================================================
808
817
834uint16_t noodle_conv_float(NoodleBuffer *input,
835 uint16_t n_inputs,
836 uint16_t n_outputs,
837 NoodleBuffer *output,
838 uint16_t W,
839 const Conv &conv,
840 const Pool &pool,
841 CBFPtr progress_cb = NULL);
842
859uint16_t noodle_conv_float(NoodleBuffer *input,
860 uint16_t n_inputs,
861 uint16_t n_outputs,
862 NoodleBuffer *output,
863 uint16_t W,
864 const ConvMem &conv,
865 const Pool &pool,
866 CBFPtr progress_cb = NULL);
867
884uint16_t noodle_conv_float(NoodleBuffer *input,
885 uint16_t n_inputs,
886 uint16_t n_outputs,
887 NoodleBuffer *output,
888 uint16_t W,
889 const ConvProgmem &conv,
890 const Pool &pool,
891 CBFPtr progress_cb = NULL);
892
908uint16_t noodle_conv1d(NoodleBuffer *input,
909 uint16_t n_inputs,
910 NoodleBuffer *output,
911 uint16_t n_outputs,
912 uint16_t W,
913 const ConvMem &conv,
914 CBFPtr progress_cb = NULL);
915
932uint16_t noodle_conv1d(NoodleBuffer *input,
933 uint16_t n_inputs,
934 NoodleBuffer *output,
935 uint16_t n_outputs,
936 uint16_t W,
937 const ConvMem &conv,
938 const Pool &pool,
939 CBFPtr progress_cb = NULL);
940
957uint16_t noodle_dwconv_float(NoodleBuffer *input,
958 uint16_t n_channels,
959 NoodleBuffer *output,
960 uint16_t W,
961 const Conv &conv,
962 const Pool &pool,
963 CBFPtr progress_cb = NULL);
964
980uint16_t noodle_dwconv_float(NoodleBuffer *input,
981 uint16_t n_channels,
982 NoodleBuffer *output,
983 uint16_t W,
984 const ConvMem &conv,
985 const Pool &pool,
986 CBFPtr progress_cb = NULL);
987
1003uint16_t noodle_dwconv_float(NoodleBuffer *input,
1004 uint16_t n_channels,
1005 NoodleBuffer *output,
1006 uint16_t W,
1007 const ConvProgmem &conv,
1008 const Pool &pool,
1009 CBFPtr progress_cb = NULL);
1010
1032 uint16_t n_inputs,
1033 uint16_t n_outputs,
1034 NoodleBuffer *output,
1035 uint16_t W,
1036 const ConvMem &conv,
1037 CBFPtr progress_cb = NULL);
1038
1051uint16_t noodle_fcn(NoodleBuffer *input,
1052 uint16_t n_inputs,
1053 uint16_t n_outputs,
1054 NoodleBuffer *output,
1055 const FCNMem &fcn,
1056 CBFPtr progress_cb = NULL);
1057
1070uint16_t noodle_fcn(NoodleBuffer *input,
1071 uint16_t n_inputs,
1072 uint16_t n_outputs,
1073 NoodleBuffer *output,
1074 const FCNFile &fcn,
1075 CBFPtr progress_cb = NULL);
1076
1089uint16_t noodle_fcn(NoodleBuffer *input,
1090 uint16_t n_inputs,
1091 uint16_t n_outputs,
1092 NoodleBuffer *output,
1093 const FCNProgmem &fcn,
1094 CBFPtr progress_cb = NULL);
1095
1107uint16_t noodle_fcn(const byte *input,
1108 uint16_t n_inputs,
1109 uint16_t n_outputs,
1110 NoodleBuffer *output,
1111 const FCNFile &fcn,
1112 CBFPtr progress_cb = NULL);
1113
1125uint16_t noodle_fcn(const int8_t *input,
1126 uint16_t n_inputs,
1127 uint16_t n_outputs,
1128 NoodleBuffer *output,
1129 const FCNFile &fcn,
1130 CBFPtr progress_cb = NULL);
1131
1143uint16_t noodle_fcn(const char *in_fn,
1144 uint16_t n_inputs,
1145 uint16_t n_outputs,
1146 NoodleBuffer *output,
1147 const FCNFile &fcn,
1148 CBFPtr progress_cb = NULL);
1149
1167uint16_t noodle_fcn_progmem(NoodleBuffer *input,
1168 uint16_t n_inputs,
1169 uint16_t n_outputs,
1170 NoodleBuffer *output,
1171 const float *weight,
1172 const float *bias,
1173 Activation act,
1174 CBFPtr progress_cb = NULL);
1175
1176// ============================================================
1177// Tensor utilities and activations
1178// ============================================================
1179
1194uint16_t noodle_flat(const char *in_fn,
1195 NoodleBuffer *output,
1196 uint16_t V,
1197 uint16_t n_filters);
1198
1212uint16_t noodle_flat(NoodleBuffer *input,
1213 NoodleBuffer *output,
1214 uint16_t V,
1215 uint16_t n_filters);
1216
1229uint16_t noodle_reshape(NoodleBuffer *src_hwc,
1230 NoodleBuffer *dst_chw,
1231 uint16_t W,
1232 uint16_t C);
1233
1246uint16_t noodle_gap(NoodleBuffer *inout, uint16_t C, uint16_t W);
1247
1260uint16_t noodle_gmp(NoodleBuffer *inout, uint16_t C, uint16_t W);
1261
1269uint16_t noodle_soft_max(NoodleBuffer *input_output, uint16_t n);
1270
1278uint16_t noodle_sigmoid(NoodleBuffer *input_output, uint16_t n);
1279
1286float noodle_sigmoidf(float x);
1287
1295uint16_t noodle_logit(NoodleBuffer *input_output, uint16_t n);
1296
1304uint16_t noodle_relu(NoodleBuffer *input_output, uint16_t n);
1305
1314void noodle_find_max(NoodleBuffer *input, uint16_t n,
1315 float &max_val, uint16_t &max_idx);
1316
1332uint16_t noodle_bn1d(NoodleBuffer *x, uint16_t N,
1333 const float *gamma, const float *beta,
1334 const float *mean, const float *var, float eps);
1335
1348uint16_t noodle_bn1d(NoodleBuffer *x, uint16_t N,
1349 const float *bn_params, float eps);
1350
1366uint16_t noodle_bn1d_relu(NoodleBuffer *x, uint16_t N,
1367 const float *gamma, const float *beta,
1368 const float *mean, const float *var, float eps);
1369
1382uint16_t noodle_bn1d_relu(NoodleBuffer *x, uint16_t N,
1383 const float *bn_params, float eps);
1384
1402uint16_t noodle_bn2d(NoodleBuffer *x, uint16_t C, uint16_t W,
1403 const float *gamma, const float *beta,
1404 const float *mean, const float *var, float eps);
1405
1420uint16_t noodle_bn2d(NoodleBuffer *x, uint16_t C, uint16_t W,
1421 const float *bn_params, float eps);
1422
1440uint16_t noodle_bn2d_relu(NoodleBuffer *x, uint16_t C, uint16_t W,
1441 const float *gamma, const float *beta,
1442 const float *mean, const float *var, float eps);
1443
1458uint16_t noodle_bn2d_relu(NoodleBuffer *x, uint16_t C, uint16_t W,
1459 const float *bn_params, float eps);
1460
1477uint16_t noodle_bn(NoodleBuffer *x, uint16_t C, uint16_t W,
1478 const float *gamma, const float *beta,
1479 const float *mean, const float *var, float eps);
1480
1495uint16_t noodle_bn(NoodleBuffer *x, uint16_t C, uint16_t W,
1496 const float *bn_params, float eps);
1497
1514uint16_t noodle_bn_relu(NoodleBuffer *x, uint16_t C, uint16_t W,
1515 const float *gamma, const float *beta,
1516 const float *mean, const float *var, float eps);
1517
1532uint16_t noodle_bn_relu(NoodleBuffer *x, uint16_t C, uint16_t W,
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