ae2f_docs
Mlp.h
Go to the documentation of this file.
1#ifndef ae2f_NEED_CLASS
2#define ae2f_NEED_CLASS 1
3#endif
4
5#ifndef ae2f_Ann_Mlp_h
6#define ae2f_Ann_Mlp_h
7
8/** TODO: Separate header and macros */
9#include "./Mlp.core.h"
10
12#include <ae2f/Ann/Act.h>
13#endif
14
15#include "./Slp.h"
16#include <ae2f/Pack/Beg.h>
17
18/**
19 * @brief
20 * # Multi Layered Perceptron
21 *
22 * This is the main structure for the MLP.
23 */
24ae2f_structdef(struct, ae2f_AnnMlp)
26{
27 /**
28 * @brief
29 * Depth of the network, including input and output layers.
30 */
31 size_t m_depth;
32
33 /**
34 * @brief
35 * Possible greatest output size.
36 */
37 size_t m_outc;
38
39 /**
40 * @brief
41 * Vector of layer sizes.
42 */
43 ae2f_LP(m_depth) const size_t* restrict m_sz;
44
45 /**
46 * @brief
47 * Weights of the network.
48 */
49 ae2f_LP(m_outc * m_outc * (m_depth - 1)) ae2f_float_t* restrict m_weight;
50 /**
51 * @brief
52 * Biases of the network.
53 */
54 ae2f_LP(m_outc * (m_depth - 1)) ae2f_float_t* restrict m_bias;
55 /**
56 * @brief
57 * Stream for delta values during backpropagation.
58 */
59 ae2f_LP(m_outc * (m_depth - 1)) ae2f_float_t* restrict m_deltastream;
60 /**
61 * @brief
62 * Cache for layer outputs.
63 */
64 ae2f_LP(m_outc * (m_depth - 1)) ae2f_float_t* restrict m_outcache;
65
66 /**
67 * @brief
68 * Activation functions for each layer.
69 */
70 ae2f_LP(m_depth - 1) ae2f_AnnAct_t** restrict m_act;
71 /**
72 * @brief
73 * Derivatives of activation functions for each layer.
74 */
75 ae2f_LP(m_depth - 1) ae2f_AnnAct_t** restrict m_actderiv;
76 /**
77 * @brief
78 * Derivative of the loss function.
79 */
80 ae2f_AnnLoss_t* m_lossderiv;
81
82 /**
83 * @brief
84 * Learning rate for weights.
85 */
86 ae2f_float_t m_learningrate,
87 /**
88 * @brief
89 * Learning rate for biases.
90 */
91 m_learningrate_bias;
92
93#if ae2f_WhenCXX(!)0
94#undef ae2f_TMP
95#define ae2f_TMP
96
97 inline void ae2f_TMP Predict(
98 ae2f_opt ae2f_err_t* restrict reterr
99 , const ae2f_float_t* restrict const inp ae2f_LP(mlp::m_sz[0])
100 , ae2f_float_t* restrict const out ae2f_LP(mlp::m_sz[fin])
101 ) const noexcept;
102
103 inline void ae2f_TMP PredictStream(
104 ae2f_opt ae2f_err_t* restrict reterr
105 , const ae2f_float_t* restrict const inp ae2f_LP(mlp::m_sz[0])
106 , ae2f_float_t* restrict const out ae2f_LP(mlp::m_sz[fin])
107 ) const noexcept;
108
109 inline void ae2f_TMP Follow(
110 ae2f_opt ae2f_err_t* const reterr
111 , const ae2f_float_t* const inp ae2f_LP(mlp::m_sz[0])
112 , const ae2f_float_t* const delta ae2f_LP(mlp::m_sz[fin])
113 ) noexcept;
114
115 inline void ae2f_TMP FollowStream(
116 ae2f_opt ae2f_err_t* const reterr
117 , const ae2f_float_t* const inp ae2f_LP(mlp::m_sz[0])
118 , const ae2f_float_t* const delta ae2f_LP(mlp::m_sz[fin])
119 ) noexcept;
120
121 inline void ae2f_TMP Train(
122 ae2f_err_t* restrict const ae2f_opt reterr
123 , const ae2f_float_t* restrict const inp ae2f_LP(mlp::m_sz[0])
124 , ae2f_float_t* restrict const out ae2f_LP(mlp::m_sz[fin])
125 , const ae2f_float_t* restrict const out_desired ae2f_LP(mlp::m_sz[fin])
126 ) noexcept;
127
128 inline void ae2f_TMP TrainStream(
129 ae2f_err_t* restrict const ae2f_opt reterr
130 , const ae2f_float_t* restrict const inp ae2f_LP(mlp::m_sz[0])
131 , ae2f_float_t* restrict const out ae2f_LP(mlp::m_sz[fin])
132 , const ae2f_float_t* restrict const out_desired ae2f_LP(mlp::m_sz[fin])
133 ) noexcept;
134
135 inline void ae2f_TMP TrainAuto(
136 ae2f_err_t* restrict const ae2f_opt reterr
137 , const ae2f_float_t* restrict const inp ae2f_LP(mlp::m_sz[0])
138 , const ae2f_float_t* restrict const out_desired ae2f_LP(mlp::m_sz[fin])
139 ) noexcept;
140
141 inline void ae2f_TMP TrainAutoStream(
142 ae2f_err_t* restrict const ae2f_opt reterr
143 , const ae2f_float_t* restrict const inp ae2f_LP(mlp::m_sz[0])
144 , const ae2f_float_t* restrict const out_desired ae2f_LP(mlp::m_sz[fin])
145 ) noexcept;
146
147#endif
148}
149#endif
150;
151
152#include <ae2f/Pack/End.h>
153
154
156
157ae2f_extern ae2f_SHAREDCALL void ae2f_AnnMlpMk(
158 ae2f_opt ae2f_err_t* restrict const reterr
159 , ae2f_AnnMlp* restrict* restrict const retmk ae2f_FREE(ae2f_AnnMlpDel)
160
161 , const size_t depth
162 , const size_t* restrict const szvector ae2f_LP(depth)
163 , ae2f_opt size_t* restrict const szswap_opt ae2f_LP(depth)
164
165 , ae2f_opt ae2f_AnnAct_t** restrict const act ae2f_LP(depth - 1)
166 , ae2f_opt ae2f_AnnAct_t** restrict const actderiv ae2f_LP(depth - 1)
167 , ae2f_AnnLoss_t* const lossderiv
168
169 , ae2f_opt ae2f_float_t* restrict const deltastream ae2f_LP(max(szvector) * (depth - 1))
170 , ae2f_opt ae2f_float_t* restrict const outcache ae2f_LP(max(szvector) * (depth - 1))
171 , ae2f_opt ae2f_float_t* restrict const weight ae2f_LP(pow(max(szvector), 2) * (depth - 1))
172 , ae2f_opt ae2f_float_t* restrict const bias ae2f_LP(max(szvector) * (depth - 1))
173
174 , ae2f_float_t const learningrate
175 , ae2f_float_t const learningrate_bias
176
177 , ae2f_opt const size_t offset
178 , ae2f_opt const size_t extra
179 ) noexcept;
180
181 ae2f_extern ae2f_SHAREDCALL void ae2f_AnnMlpDel(
182 ae2f_AnnMlp* restrict const block
183 ) noexcept;
184
185 /**
186 * @brief
187 * Predict the output from mlp.
188 * */
189ae2f_extern ae2f_SHAREDCALL void ae2f_AnnMlpPredict(
190 ae2f_opt ae2f_err_t* restrict reterr
191 , const ae2f_AnnMlp* restrict const mlp
192 , const ae2f_float_t* restrict const inp ae2f_LP(mlp::m_sz[0])
193 , ae2f_float_t* restrict const out ae2f_LP(mlp::m_sz[fin])
194 ) noexcept;
195
196 /**
197 * @brief
198 * Predict the output from mlp.
199 *
200 * @details
201 * Every output calculated for each layer will be stored on mlp->m_outcache
202 * */
203ae2f_extern ae2f_SHAREDCALL void ae2f_AnnMlpPredictStream(
204 ae2f_err_t* restrict reterr
205 , const ae2f_AnnMlp* restrict const mlp
206 , const ae2f_float_t* restrict const inp ae2f_LP(mlp::m_sz[0])
207 , ae2f_float_t* restrict const out ae2f_LP(mlp::m_sz[fin])
208 ) noexcept;
209
210 /**
211 * @brief
212 * Adjusts the weights and biases with given delta for last layer.
213 * */
214ae2f_extern ae2f_SHAREDCALL void ae2f_AnnMlpFollow(
215 ae2f_opt ae2f_err_t* restrict const reterr
216 , const ae2f_AnnMlp* restrict mlp
217 , const ae2f_float_t* restrict const inp ae2f_LP(mlp::m_sz[0])
218 , const ae2f_float_t* restrict const delta ae2f_LP(mlp::m_sz[fin])
219 ) noexcept;
220
221 /**
222 * @brief
223 * Adjusts the weights and biases with given delta for last layer.
224 * */
225ae2f_extern ae2f_SHAREDCALL void ae2f_AnnMlpFollowStream(
226 ae2f_opt ae2f_err_t* restrict const reterr
227 , const ae2f_AnnMlp* restrict mlp
228 , const ae2f_float_t* restrict const inp ae2f_LP(mlp::m_sz[0])
229 , const ae2f_float_t* restrict const delta ae2f_LP(mlp::m_sz[fin])
230 ) noexcept;
231
232 /**
233 * @brief
234 * Adjusts the weights and biases with given input and output_desired
235 * */
236ae2f_extern ae2f_SHAREDCALL void ae2f_AnnMlpTrain(
237 ae2f_err_t* restrict const ae2f_opt reterr
238 , ae2f_AnnMlp* restrict const mlp
239 , const ae2f_float_t* restrict const inp ae2f_LP(mlp::m_sz[0])
240 , ae2f_float_t* restrict const out ae2f_LP(mlp::m_sz[fin])
241 , const ae2f_float_t* restrict const out_desired ae2f_LP(mlp::m_sz[fin])
242 ) noexcept;
243
244 /**
245 * @brief
246 * Adjusts the weights and biases with given input and output_desired
247 * Previous output will be
248 * */
249ae2f_extern ae2f_SHAREDCALL void ae2f_AnnMlpTrainStream(
250 ae2f_err_t* restrict const ae2f_opt reterr
251 , ae2f_AnnMlp* restrict const mlp
252 , const ae2f_float_t* restrict const inp ae2f_LP(mlp::m_sz[0])
253 , ae2f_float_t* restrict const out ae2f_LP(mlp::m_sz[fin])
254 , const ae2f_float_t* restrict const out_desired ae2f_LP(mlp::m_sz[fin])
255 ) noexcept;
256
257 /**
258 * @brief
259 * Adjusts the weights and biases with given input and output_desired
260 * */
261ae2f_extern ae2f_SHAREDCALL void ae2f_AnnMlpTrainAuto(
262 ae2f_err_t* restrict const ae2f_opt reterr
263 , ae2f_AnnMlp* restrict const mlp
264 , const ae2f_float_t* restrict const inp ae2f_LP(mlp::m_sz[0])
265 , const ae2f_float_t* restrict const out_desired ae2f_LP(mlp::m_sz[fin])
266 ) noexcept;
267
268 /**
269 * @brief
270 * Adjusts the weights and biases with given input and output_desired
271 * Previous output will be
272 * */
273ae2f_extern ae2f_SHAREDCALL void ae2f_AnnMlpTrainAutoStream(
274 ae2f_err_t* restrict const ae2f_opt reterr
275 , ae2f_AnnMlp* restrict const mlp
276 , const ae2f_float_t* restrict const inp ae2f_LP(mlp::m_sz[0])
277 , const ae2f_float_t* restrict const out_desired ae2f_LP(mlp::m_sz[fin])
278 ) noexcept;
279
280#else
281
282#define ae2f_AnnMlpMk __ae2f_AnnMlpMk_C
283#define ae2f_AnnMlpDel __ae2f_AnnMlpDel_C
284
285#define ae2f_AnnMlpPredict __ae2f_AnnMlpPredict_C
286#define ae2f_AnnMlpPredictStream __ae2f_AnnMlpPredictStream_C
287#define ae2f_AnnMlpFollow __ae2f_AnnMlpFollow_C
288#define ae2f_AnnMlpFollowStream __ae2f_AnnMlpFollowStream_C
289#define ae2f_AnnMlpTrain __ae2f_AnnMlpTrain_C
290#define ae2f_AnnMlpTrainStream __ae2f_AnnMlpTrainStream_C
291#define ae2f_AnnMlpTrainAuto __ae2f_AnnMlpTrainAuto_C
292#define ae2f_AnnMlpTrainAutoStream __ae2f_AnnMlpTrainAutoStream_C
293
294
295#endif
296
297#include "./Mlp.auto.h"
298
300
301 /**
302 * @FIXME
303 * It somehow compiles and I see redefining errors.
304 * */
305#undef ae2f_TMP
306#define ae2f_TMP ae2f_AnnMlp::
307inline void ae2f_TMP Predict(
308 ae2f_err_t* restrict reterr
309 , const ae2f_float_t* restrict const inp ae2f_LP(mlp::m_sz[0])
310 , ae2f_float_t* restrict const out ae2f_LP(mlp::m_sz[fin])
311 ) const noexcept {
312 ae2f_AnnMlpPredict(reterr, this, inp, out);
313}
314
315inline void ae2f_TMP PredictStream(
316 ae2f_err_t* restrict reterr
317 , const ae2f_float_t* restrict const inp ae2f_LP(mlp::m_sz[0])
318 , ae2f_float_t* restrict const out ae2f_LP(mlp::m_sz[fin])
319 ) const noexcept {
320 ae2f_AnnMlpPredictStream(reterr, this, inp, out);
321}
322
323inline void ae2f_TMP Follow(
324 ae2f_err_t* const reterr
325 , const ae2f_float_t* restrict const inp ae2f_LP(mlp::m_sz[0])
326 , const ae2f_float_t* restrict const delta ae2f_LP(mlp::m_sz[fin])
327 ) noexcept {
328 ae2f_AnnMlpFollow(reterr, this, inp, delta);
329}
330
331inline void ae2f_TMP FollowStream(
332 ae2f_err_t* const reterr
333 , const ae2f_float_t* restrict const inp ae2f_LP(mlp::m_sz[0])
334 , const ae2f_float_t* restrict const delta ae2f_LP(mlp::m_sz[fin])
335 ) noexcept {
336 ae2f_AnnMlpFollowStream(reterr, this, inp, delta);
337}
338
339inline void ae2f_TMP Train(
340 ae2f_err_t* restrict const ae2f_opt reterr
341 , const ae2f_float_t* restrict const inp ae2f_LP(mlp::m_sz[0])
342 , ae2f_float_t* restrict const out ae2f_LP(mlp::m_sz[fin])
343 , const ae2f_float_t* restrict const out_desired ae2f_LP(mlp::m_sz[fin])
344 ) noexcept {
345 ae2f_AnnMlpTrain(reterr, this, inp, out, out_desired);
346}
347
348inline void ae2f_TMP TrainStream(
349 ae2f_err_t* restrict const ae2f_opt reterr
350 , const ae2f_float_t* restrict const inp ae2f_LP(mlp::m_sz[0])
351 , ae2f_float_t* restrict const out ae2f_LP(mlp::m_sz[fin])
352 , const ae2f_float_t* restrict const out_desired ae2f_LP(mlp::m_sz[fin])
353 ) noexcept {
354 ae2f_AnnMlpTrainStream(reterr, this, inp, out, out_desired);
355}
356
357inline void ae2f_TMP TrainAuto(
358 ae2f_err_t* restrict const ae2f_opt reterr
359 , const ae2f_float_t* restrict const inp ae2f_LP(mlp::m_sz[0])
360 , const ae2f_float_t* restrict const out_desired ae2f_LP(mlp::m_sz[fin])
361 ) noexcept {
362 ae2f_AnnMlpTrainAuto(reterr, this, inp, out_desired);
363}
364
365inline void ae2f_TMP TrainAutoStream(
366 ae2f_err_t* restrict const ae2f_opt reterr
367 , const ae2f_float_t* restrict const inp ae2f_LP(mlp::m_sz[0])
368 , const ae2f_float_t* restrict const out_desired ae2f_LP(mlp::m_sz[fin])
369 ) noexcept {
370 ae2f_AnnMlpTrainAutoStream(reterr, this, inp, out_desired);
371}
372
373
374#endif
375
376#define __ae2f_AnnMlpTrain_C(reterr, mlp, inp, out, out_desired)
377 __ae2f_AnnMlpTrainPrimal(&1 ? 0 : 1, &1, reterr, mlp, inp, out, out_desired)
378
379#define __ae2f_AnnMlpTrainStream_C(reterr, mlp, inp, out, out_desired)
380 __ae2f_AnnMlpTrainPrimal(&1 ? 0 : 1, ae2f_NONE, reterr, mlp, inp, out, out_desired)
381
382#define __ae2f_AnnMlpTrain_imp(...)
383 __ae2f_AnnMlpTrainPrimal_imp(&1 ? 0 : 1, &1, __VA_ARGS__)
384
385#define __ae2f_AnnMlpTrainStream_imp(...)
387
388
389/** @see __ae2f_AnnMlpTrainAutoPrimal */
390#define __ae2f_AnnMlpTrainAuto_C(reterr, mlp, inp, out_desired)
391 __ae2f_AnnMlpTrainAutoPrimal(&1 ? 0 : 1, &1, reterr, mlp, inp, out_desired)
392
393/** @see __ae2f_AnnMlpTrainAutoPrimal */
394#define __ae2f_AnnMlpTrainAutoStream_C(reterr, mlp, inp, out_desired)
395 __ae2f_AnnMlpTrainAutoPrimal(-1, ae2f_NONE, reterr, mlp, inp, out_desired)
396
397#endif
void ae2f_AnnAct_t(ae2f_float_t *ret, ae2f_float_t x)
Customisable activasion function type.
Definition Act.h:19
void ae2f_AnnLoss_t(ae2f_float_t *ret, const ae2f_float_t *out, const ae2f_float_t *goal, size_t index, size_t count)
Specify the way of calculating loss.
Definition Act.h:29
#define ae2f_AnnUtilV2Name(A_t, B_t)
Definition Util.h:11
#define ae2f_AnnUtilV2(A_LEFT, A_t, A_POST, B_LEFT, B_t, B_POST)
Definition Util.h:14
#define ae2f_AnnUtilPtr2Name(A_t, B_t)
Definition Util.h:8
#define ON
Definition cmake.hpp:5
#define ae2f_structdef(key, name)
Definition Cast.h:110
#define ae2f_reinterpret_cast(t, v)
Definition Cast.h:52
#define unless(...)
Invokes when condition is false.
Definition Cast.h:103
#define ae2f_extern
Suggests the existence of external variable or function, in naming of C. [non-mangling].
Definition Cast.h:88
#define ae2f_structdef_n(key, name,...)
Definition Cast.h:109
#define ae2f_WhenCXX(...)
Appears when the current language is C.
Definition Cxx.h:34
#define ae2f_NONE
Literally nothing.
Definition Cxx.h:13
ae2f_float ae2f_float_t
Definition Float.h:38
#define ae2f_LP(...)
Desired count required.
Definition Guide.h:23
#define ae2f_FREE(...)
Use this marker to show the desired functions to effectively free the resources.
Definition Guide.h:33
#define ae2f_opt
Definition Guide.h:26
#define ae2f_MAC_BUILD
Definition Util.h:4
#define ae2f_NEED_CLASS
Definition Mlp.cl.c:1
ae2f_SHAREDEXPORT void ae2f_AnnMlpPredict(ae2f_err_t *restrict reterr, const ae2f_AnnMlp *restrict const mlp, const ae2f_float_t *restrict const inp, ae2f_float_t *restrict const out) noexcept
Definition Mlp.imp.c:46
ae2f_SHAREDEXPORT void ae2f_AnnMlpFollowStream(ae2f_err_t *const reterr, const ae2f_AnnMlp *mlp, const ae2f_float_t *const inp, const ae2f_float_t *const delta)
Definition Mlp.imp.c:76
ae2f_SHAREDEXPORT void ae2f_AnnMlpPredictStream(ae2f_err_t *restrict reterr, const ae2f_AnnMlp *restrict const mlp, const ae2f_float_t *restrict const inp, ae2f_float_t *restrict const out) noexcept
Definition Mlp.imp.c:56
ae2f_SHAREDEXPORT void ae2f_AnnMlpTrainAutoStream(ae2f_err_t *restrict const ae2f_opt reterr, ae2f_AnnMlp *restrict const mlp, const ae2f_float_t *restrict const inp, const ae2f_float_t *restrict const out_desired) noexcept
Definition Mlp.imp.c:116
ae2f_SHAREDEXPORT void ae2f_AnnMlpTrainAuto(ae2f_err_t *restrict const ae2f_opt reterr, ae2f_AnnMlp *restrict const mlp, const ae2f_float_t *restrict const inp, const ae2f_float_t *restrict const out_desired) noexcept
Definition Mlp.imp.c:107
ae2f_SHAREDEXPORT void ae2f_AnnMlpDel(ae2f_AnnMlp *restrict const block) noexcept
Definition Mlp.imp.c:40
ae2f_SHAREDEXPORT void ae2f_AnnMlpMk(ae2f_err_t *restrict const reterr, ae2f_AnnMlp *restrict *restrict const retmk, const size_t depth, const size_t *restrict const szvector, ae2f_opt size_t *restrict const szswap_opt, ae2f_opt ae2f_AnnAct_t **restrict const act, ae2f_opt ae2f_AnnAct_t **restrict const actderiv, ae2f_AnnLoss_t *const lossderiv, ae2f_opt ae2f_float_t *restrict const deltastream, ae2f_opt ae2f_float_t *restrict const outcache, ae2f_opt ae2f_float_t *restrict const weight, ae2f_opt ae2f_float_t *restrict const bias, ae2f_float_t const learningrate, ae2f_float_t const learningrate_bias, const size_t offset, const size_t extra) noexcept
Definition Mlp.imp.c:5
ae2f_SHAREDEXPORT void ae2f_AnnMlpFollow(ae2f_err_t *const reterr, const ae2f_AnnMlp *mlp, const ae2f_float_t *const inp, const ae2f_float_t *const delta)
Definition Mlp.imp.c:66
ae2f_SHAREDEXPORT void ae2f_AnnMlpTrainStream(ae2f_err_t *restrict const ae2f_opt reterr, ae2f_AnnMlp *restrict const mlp, const ae2f_float_t *restrict const inp, ae2f_float_t *restrict const out, const ae2f_float_t *restrict const out_desired) noexcept
Definition Mlp.imp.c:97
ae2f_SHAREDEXPORT void ae2f_AnnMlpTrain(ae2f_err_t *restrict const ae2f_opt reterr, ae2f_AnnMlp *restrict const mlp, const ae2f_float_t *restrict const inp, ae2f_float_t *restrict const out, const ae2f_float_t *restrict const out_desired) noexcept
Definition Mlp.imp.c:87
const ae2f_AnnMlp_t const ae2f_float_t *const inp
Definition Mlp.def.cc:318
size_t const ae2f_AnnSlp_t ae2f_float_t *const const ae2f_float_t *const ae2f_AnnAct_t actderiv_then
Definition Mlp.def.cc:508
const ae2f_AnnMlp_t mlp
Definition Mlp.def.cc:317
const ae2f_AnnMlp_t const ae2f_float_t *const ae2f_float_t *const const size_t *const const ae2f_float_t *const const ae2f_float_t *const bias
Definition Mlp.def.cc:323
const ae2f_AnnMlp_t const ae2f_float_t *const ae2f_float_t *const const size_t *const sz
Definition Mlp.def.cc:321
const ae2f_AnnSlp_t slp
Definition Mlp.def.cc:484
const ae2f_AnnMlp_t const ae2f_float_t *const ae2f_float_t *const const size_t *const const ae2f_float_t *const const ae2f_float_t *const ae2f_float_t *const outcache
Definition Mlp.def.cc:325
const ae2f_AnnSlp_t const ae2f_float_t *const const ae2f_float_t *const delta
Definition Mlp.def.cc:486
const ae2f_AnnMlp_t const ae2f_float_t *const ae2f_float_t *const const size_t *const const ae2f_float_t *const weight
Definition Mlp.def.cc:322
const ae2f_AnnSlp_t const ae2f_float_t *const const ae2f_float_t *const const size_t iidx
Definition Mlp.def.cc:488
const ae2f_AnnMlp_t const ae2f_float_t *const ae2f_float_t *const out
Definition Mlp.def.cc:320
size_t const ae2f_AnnSlp_t slp_then
Definition Mlp.def.cc:503
size_t const ae2f_AnnSlp_t ae2f_float_t *const const ae2f_float_t *const deltaseed
Definition Mlp.def.cc:506
#define OPER_NONE
Definition Mlp.def.cc:21
size_t v_send
Definition Mlp.def.cc:502
size_t const ae2f_AnnSlp_t ae2f_float_t *const retdelta_then
Definition Mlp.def.cc:505
const ae2f_AnnMlp_t const ae2f_float_t *const ae2f_float_t *const const size_t *const const ae2f_float_t *const const ae2f_float_t *const ae2f_float_t *const ae2f_AnnAct_t *const *const act_opt
Definition Mlp.def.cc:327
#define OPER_NEG
Definition Mlp.def.cc:20
ae2f_SHAREDEXPORT void ae2f_AnnSlpFit(ae2f_err_t *restrict const reterr_opt, const ae2f_AnnSlp *restrict const _this, ae2f_LP(_this::inc) const ae2f_float_t *restrict const prm_inp, ae2f_LP(_this::outc) const ae2f_float_t *restrict const prm_out, ae2f_LP(_this::outc) const ae2f_float_t *restrict const prm_out_desired) noexcept
Definition Slp.imp.c:82
ae2f_SHAREDEXPORT void ae2f_AnnSlpFetchDelta(ae2f_opt ae2f_err_t *restrict const err, const ae2f_AnnSlp *restrict slp, ae2f_LP(slp::outc) const ae2f_float_t *restrict const out, ae2f_LP(slp::outc) const ae2f_float_t *restrict const out_desired, ae2f_LP(slp::outc) ae2f_float_t *restrict const retdelta) noexcept
Definition Slp.imp.c:97
ae2f_SHAREDEXPORT void ae2f_AnnSlpTrain(ae2f_err_t *restrict const err, ae2f_AnnSlp *restrict slp, ae2f_LP(slp::inc) const ae2f_float_t *restrict inp, ae2f_LP(slp::outc) const ae2f_float_t *restrict out_desired) noexcept
Definition Slp.imp.c:110
ae2f_SHAREDEXPORT void ae2f_AnnSlpPredict(ae2f_err_t *restrict const err_opt, const ae2f_AnnSlp *restrict const _this, const ae2f_float_t *restrict const prm_in, ae2f_float_t *restrict const out) noexcept
Definition Slp.imp.c:59
ae2f_SHAREDEXPORT void ae2f_AnnSlpDel(ae2f_AnnSlp *restrict const slp) noexcept
Definition Slp.imp.c:55
ae2f_SHAREDEXPORT void ae2f_AnnSlpFollow(ae2f_err_t *const restrict reterr_opt, const ae2f_AnnSlp *restrict const _this, const ae2f_float_t *restrict const prm_in, const ae2f_float_t *restrict const delta) noexcept
Definition Slp.imp.c:73
ae2f_SHAREDEXPORT void ae2f_AnnSlpMk(ae2f_LP(inc *outc) ae2f_float_t *restrict const weight_opt, ae2f_LP(outc) ae2f_float_t *restrict const bias_opt, ae2f_LP(outc) ae2f_float_t *restrict const cache_opt, const size_t inc, const size_t outc, const size_t offset_opt, const size_t extra_opt, ae2f_FREE(ae2f_AnnSlpDel, __ae2f_AnnSlpDel) ae2f_AnnSlp *restrict *restrict const slp, ae2f_opt ae2f_AnnAct_t *const act, ae2f_opt ae2f_AnnAct_t *const actderiv, ae2f_AnnLoss_t *const lossderiv, ae2f_float_t learningrate, ae2f_float_t learningrate_bias, ae2f_opt ae2f_err_t *restrict const err_opt) noexcept
Definition Slp.imp.c:26
ae2f_SHAREDEXPORT void ae2f_AnnSlpInit(ae2f_AnnSlp_t *restrict const _this, const size_t inc, const size_t outc, const size_t offset_opt, ae2f_err_t *restrict const err_opt, size_t *restrict const initsz_opt) noexcept __ae2f_AnnSlpInit_C(_this
#define ae2f_errGlob_ALLOC_FAILED
stdlib allocating functions (malloc, calloc, realloc) has been failed.
Definition errGlob.h:40
uint8_t ae2f_err_t
Informs that this number represents the error.
Definition errGlob.h:19
#define ae2f_errGlob_PTR_IS_NULL
Failed to refer the pointer either l-value inside the function.
Definition errGlob.h:32
#define ae2f_errGlob_IMP_NOT_FOUND
Failed to find the function on preprocessor which is callable for some reason No operation has beed d...
Definition errGlob.h:28
#define __ae2f_AnnMlpFollowPrimal(...)
Definition Mlp.auto.h:756
#define __ae2f_AnnMlpHidDeltaSingle_imp(v_single, slp, weight, delta, iidx)
Definition Mlp.auto.h:503
#define __ae2f_MACRO_GENERATED
Definition Mlp.auto.h:2
#define __ae2f_AnnMlpTrainAutoPrimal(...)
Definition Mlp.auto.h:897
#define __ae2f_AnnMlpPropagate_imp(v_tmp, v_send, slp_then, retdelta_then, deltaseed, actderiv_then, inp)
delta to delta
Definition Mlp.auto.h:525
#define __ae2f_AnnMlpPredictStream_imp(...)
Definition Mlp.auto.h:491
#define __ae2f_AnnMlpFollowPrimal_imp(OPER_NEG, OPER_NONE, v_follow, mlp, inp, delta, lenv, outstream, deltacache, weight, bias, learningrate, learningrate_bias, actderiv)
Definition Mlp.auto.h:552
#define __ae2f_AnnMlpPredictPrimal(...)
Definition Mlp.auto.h:485
#define __ae2f_AnnMlpPredictPrimal_imp(OPER_NEG, OPER_NONE, v_predict, mlp, inp, out, sz, weight, bias, outcache, act_opt)
layer must be more than 2
Definition Mlp.auto.h:330
#define __ae2f_AnnMlpInitWithOutSz_imp(...)
Definition Mlp.auto.h:321
#define __ae2f_AnnMlpTrainPrimal(...)
Definition Mlp.auto.h:894
#define __ae2f_AnnMlpSz_imp(...)
Definition Mlp.auto.h:318
#define __ae2f_AnnMlpTrainPrimal_imp(OPER_NEG, OPER_NONE, v_train, mlp, inp, out, out_desired, lenv, outstream, deltacache, weight, bias, learningrate, learningrate_bias, act, actderiv, lossderiv)
Definition Mlp.auto.h:767
#define __ae2f_AnnMlpMk_imp(...)
Definition Mlp.auto.h:315
#define __ae2f_AnnSlpPredict(err_opt, _this, prm_in, out, weight, bias, act_opt)
Definition Slp.auto.h:298
#define __ae2f_AnnSlpInit_imp(...)
Definition Slp.auto.h:107
#define __ae2f_AnnSlpMk_imp(...)
Definition Slp.auto.h:232
#define __ae2f_AnnSlpTrain_imp(v_train, slp, inp, out_cache, out_desired, weights, bias, cachedelta, act, actderiv, lossderiv, learningrate, learningrate_bias)
Definition Slp.auto.h:868
#define __ae2f_AnnSlpInit(...)
Definition Slp.auto.h:111
#define __ae2f_AnnSlpFit(reterr_opt, _this, prm_inp, prm_out, prm_out_desired, weights, bias, cachedelta, actderiv_opt, lossderiv, learningrate, learningrate_bias)
Definition Slp.auto.h:720
#define __ae2f_AnnSlpFit_imp(v_fit, slp, inp, out, out_desired, weights, bias, cachedelta, actderiv_opt, lossderiv, learningrate, learningrate_bias)
Definition Slp.auto.h:687
#define __ae2f_AnnSlpFitOne_imp(v_fit, inp, out, out_desired, weight, r_bias, r_cachedelta, actderiv_opt, lossderiv, learningrate, learningrate_bias, iidx, oidx, isz, osz)
Definition Slp.auto.h:649
#define __ae2f_AnnSlpPredictOne_imp(v_predict, prm_in, weight, bias, act_opt, oidx, isz)
Definition Slp.auto.h:243
#define __ae2f_AnnSlpFollow_imp(v_follow, _this, prm_in, delta, weight, bias, learningrate, learningrate_bias)
Definition Slp.auto.h:420
#define __ae2f_AnnSlpFollow(reterr_opt, _this, prm_in, delta, weight, bias, learningrate, learningrate_bias)
Definition Slp.auto.h:449
#define __ae2f_AnnSlpTrain(err, slp, inp, out_cache, out_desired, weights, bias, cachedelta, act, actderiv, lossderiv, learningrate, learningrate_bias)
Definition Slp.auto.h:934
#define __ae2f_AnnSlpInitInpSz_imp(...)
Definition Slp.auto.h:103
#define __ae2f_AnnSlpFollowOne_imp(v_follow, prm_in, delta, weight, learningrate, learningrate_bias, inp_sz, out_idx, v_bias)
Definition Slp.auto.h:395
#define __ae2f_AnnSlpMk(...)
Definition Slp.auto.h:236
#define __ae2f_AnnSlpFetchDelta_imp(v_delta, slp, out, out_desired, actderiv_opt, lossderiv, retdelta)
Definition Slp.auto.h:538
#define __ae2f_AnnSlpPredict_imp(v_predict, _this, prm_in, out, weight, bias, act_opt)
Definition Slp.auto.h:268
#define __ae2f_AnnSlpFetchDeltaOne_imp(v_fetchdelta_0, v_fetchdelta_1, out, out_desired, actderiv_opt, lossderiv, retdelta, oidx, osz)
Definition Slp.auto.h:513
#define ae2f_MAC()
delta to delta
Definition mac.h:4