4#define ae2f_NEED_CLASS 1
11#include "./Mlp.core.h"
14#include <ae2f/Ann/Act.h>
18#include <ae2f/Pack/Beg.h>
22
23
24
25
26
31
32
33
37
38
39
46
47
48
49 ae2f_LP(m_depth)
const size_t* ae2f_restrict m_sz;
52
53
54
55 ae2f_LP(m_outc * m_outc * (m_depth - 1)) ae2f_float_t* ae2f_restrict m_weight;
57
58
59
60 ae2f_LP(m_outc * (m_depth - 1)) ae2f_float_t* ae2f_restrict m_bias;
62
63
64
65 ae2f_LP(m_outc * (m_depth - 1)) ae2f_float_t* ae2f_restrict m_deltastream;
67
68
69
70 ae2f_LP(m_outc * (m_depth - 1)) ae2f_float_t* ae2f_restrict m_outcache;
73
74
75
76 ae2f_LP(m_depth - 1) ae2f_AnnActFFN_t** ae2f_restrict m_act;
78
79
80
81 ae2f_LP(m_depth - 1) ae2f_AnnActFFN_t** ae2f_restrict m_actderiv;
83
84
85
86 ae2f_AnnLossFFN_t* m_lossderiv;
89
90
91
92 ae2f_float_t m_learningrate;
94
95
96
97 ae2f_float_t m_learningrate_bias;
103 inline void ae2f_TMP Predict(
105 ,
const ae2f_float_t* ae2f_restrict
const inp
ae2f_LP(mlp::m_sz[0])
106 , ae2f_float_t* ae2f_restrict
const out
ae2f_LP(mlp::m_sz[fin])
107 )
const ae2f_noexcept;
109 inline void ae2f_TMP PredictStream(
111 ,
const ae2f_float_t* ae2f_restrict
const inp
ae2f_LP(mlp::m_sz[0])
112 , ae2f_float_t* ae2f_restrict
const out
ae2f_LP(mlp::m_sz[fin])
113 )
const ae2f_noexcept;
115 inline void ae2f_TMP Follow(
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])
121 inline void ae2f_TMP FollowStream(
123 ,
const ae2f_float_t*
const inp
ae2f_LP(mlp::m_sz[0])
124 ,
const ae2f_float_t*
const delta
ae2f_LP(mlp::m_sz[fin])
127 inline void ae2f_TMP Train(
129 ,
const ae2f_float_t* ae2f_restrict
const inp
ae2f_LP(mlp::m_sz[0])
130 , ae2f_float_t* ae2f_restrict
const out
ae2f_LP(mlp::m_sz[fin])
131 ,
const ae2f_float_t* ae2f_restrict
const out_desired
ae2f_LP(mlp::m_sz[fin])
134 inline void ae2f_TMP TrainStream(
136 ,
const ae2f_float_t* ae2f_restrict
const inp
ae2f_LP(mlp::m_sz[0])
137 , ae2f_float_t* ae2f_restrict
const out
ae2f_LP(mlp::m_sz[fin])
138 ,
const ae2f_float_t* ae2f_restrict
const out_desired
ae2f_LP(mlp::m_sz[fin])
141 inline void ae2f_TMP TrainAuto(
143 ,
const ae2f_float_t* ae2f_restrict
const inp
ae2f_LP(mlp::m_sz[0])
144 ,
const ae2f_float_t* ae2f_restrict
const out_desired
ae2f_LP(mlp::m_sz[fin])
147 inline void ae2f_TMP TrainAutoStream(
149 ,
const ae2f_float_t* ae2f_restrict
const inp
ae2f_LP(mlp::m_sz[0])
150 ,
const ae2f_float_t* ae2f_restrict
const out_desired
ae2f_LP(mlp::m_sz[fin])
158#include <ae2f/Pack/End.h>
163ae2f_extern ae2f_SHAREDCALL
void ae2f_AnnMlpMk(
164 ae2f_opt ae2f_err_t* ae2f_restrict
const reterr
165 , ae2f_AnnMlp* ae2f_restrict* ae2f_restrict
const retmk ae2f_FREE(ae2f_AnnMlpDel)
168 ,
const size_t* ae2f_restrict
const szvector ae2f_LP(depth)
169 , ae2f_opt size_t* ae2f_restrict
const szswap_opt ae2f_LP(depth)
171 , ae2f_opt ae2f_AnnActFFN_t** ae2f_restrict
const act ae2f_LP(depth - 1)
172 , ae2f_opt ae2f_AnnActFFN_t** ae2f_restrict
const actderiv ae2f_LP(depth - 1)
173 , ae2f_AnnLoss_t*
const lossderiv
175 , ae2f_opt ae2f_float_t* ae2f_restrict
const deltastream ae2f_LP(max(szvector) * (depth - 1))
176 , ae2f_opt ae2f_float_t* ae2f_restrict
const outcache ae2f_LP(max(szvector) * (depth - 1))
177 , ae2f_opt ae2f_float_t* ae2f_restrict
const weight ae2f_LP(pow(max(szvector), 2) * (depth - 1))
178 , ae2f_opt ae2f_float_t* ae2f_restrict
const bias ae2f_LP(max(szvector) * (depth - 1))
180 , ae2f_float_t
const learningrate
181 , ae2f_float_t
const learningrate_bias
183 , ae2f_opt
const size_t offset
184, ae2f_opt
const size_t extra
187ae2f_extern ae2f_SHAREDCALL
void ae2f_AnnMlpDel(
188 ae2f_AnnMlp* ae2f_restrict
const block
192
193
194
195ae2f_extern ae2f_SHAREDCALL
void ae2f_AnnMlpPredict(
196 ae2f_opt ae2f_err_t* ae2f_restrict reterr
197 ,
const ae2f_AnnMlp* ae2f_restrict
const mlp
198 ,
const ae2f_float_t* ae2f_restrict
const inp ae2f_LP(mlp::m_sz[0])
199 , ae2f_float_t* ae2f_restrict
const out ae2f_LP(mlp::m_sz[fin])
203
204
205
206
207
208
209ae2f_extern ae2f_SHAREDCALL
void ae2f_AnnMlpPredictStream(
210 ae2f_err_t* ae2f_restrict reterr
211 ,
const ae2f_AnnMlp* ae2f_restrict
const mlp
212 ,
const ae2f_float_t* ae2f_restrict
const inp ae2f_LP(mlp::m_sz[0])
213 , ae2f_float_t* ae2f_restrict
const out ae2f_LP(mlp::m_sz[fin])
217
218
219
220ae2f_extern ae2f_SHAREDCALL
void ae2f_AnnMlpFollow(
221 ae2f_opt ae2f_err_t* ae2f_restrict
const reterr
222 ,
const ae2f_AnnMlp* ae2f_restrict mlp
223 ,
const ae2f_float_t* ae2f_restrict
const inp ae2f_LP(mlp::m_sz[0])
224 ,
const ae2f_float_t* ae2f_restrict
const delta ae2f_LP(mlp::m_sz[fin])
228
229
230
231ae2f_extern ae2f_SHAREDCALL
void ae2f_AnnMlpFollowStream(
232 ae2f_opt ae2f_err_t* ae2f_restrict
const reterr
233 ,
const ae2f_AnnMlp* ae2f_restrict mlp
234 ,
const ae2f_float_t* ae2f_restrict
const inp ae2f_LP(mlp::m_sz[0])
235 ,
const ae2f_float_t* ae2f_restrict
const delta ae2f_LP(mlp::m_sz[fin])
239
240
241
242ae2f_extern ae2f_SHAREDCALL
void ae2f_AnnMlpTrain(
243 ae2f_err_t* ae2f_restrict
const ae2f_opt reterr
244 , ae2f_AnnMlp* ae2f_restrict
const mlp
245 ,
const ae2f_float_t* ae2f_restrict
const inp ae2f_LP(mlp::m_sz[0])
246 , ae2f_float_t* ae2f_restrict
const out ae2f_LP(mlp::m_sz[fin])
247 ,
const ae2f_float_t* ae2f_restrict
const out_desired ae2f_LP(mlp::m_sz[fin])
251
252
253
254
255ae2f_extern ae2f_SHAREDCALL
void ae2f_AnnMlpTrainStream(
256 ae2f_err_t* ae2f_restrict
const ae2f_opt reterr
257 , ae2f_AnnMlp* ae2f_restrict
const mlp
258 ,
const ae2f_float_t* ae2f_restrict
const inp ae2f_LP(mlp::m_sz[0])
259 , ae2f_float_t* ae2f_restrict
const out ae2f_LP(mlp::m_sz[fin])
260 ,
const ae2f_float_t* ae2f_restrict
const out_desired ae2f_LP(mlp::m_sz[fin])
264
265
266
267ae2f_extern ae2f_SHAREDCALL
void ae2f_AnnMlpTrainAuto(
268 ae2f_err_t* ae2f_restrict
const ae2f_opt reterr
269 , ae2f_AnnMlp* ae2f_restrict
const mlp
270 ,
const ae2f_float_t* ae2f_restrict
const inp ae2f_LP(mlp::m_sz[0])
271 ,
const ae2f_float_t* ae2f_restrict
const out_desired ae2f_LP(mlp::m_sz[fin])
275
276
277
278
279ae2f_extern ae2f_SHAREDCALL
void ae2f_AnnMlpTrainAutoStream(
280 ae2f_err_t* ae2f_restrict
const ae2f_opt reterr
281 , ae2f_AnnMlp* ae2f_restrict
const mlp
282 ,
const ae2f_float_t* ae2f_restrict
const inp ae2f_LP(mlp::m_sz[0])
283 ,
const ae2f_float_t* ae2f_restrict
const out_desired ae2f_LP(mlp::m_sz[fin])
303#include "./Mlp.auto.h"
308
309
310
312#define ae2f_TMP ae2f_AnnMlp::
313inline void ae2f_TMP Predict(
315 ,
const ae2f_float_t* ae2f_restrict
const inp
ae2f_LP(mlp::m_sz[0])
316 , ae2f_float_t* ae2f_restrict
const out
ae2f_LP(mlp::m_sz[fin])
317 )
const ae2f_noexcept {
321inline void ae2f_TMP PredictStream(
323 ,
const ae2f_float_t* ae2f_restrict
const inp
ae2f_LP(mlp::m_sz[0])
324 , ae2f_float_t* ae2f_restrict
const out
ae2f_LP(mlp::m_sz[fin])
325 )
const ae2f_noexcept {
329inline void ae2f_TMP Follow(
331 ,
const ae2f_float_t* ae2f_restrict
const inp
ae2f_LP(mlp::m_sz[0])
332 ,
const ae2f_float_t* ae2f_restrict
const delta
ae2f_LP(mlp::m_sz[fin])
337inline void ae2f_TMP FollowStream(
339 ,
const ae2f_float_t* ae2f_restrict
const inp
ae2f_LP(mlp::m_sz[0])
340 ,
const ae2f_float_t* ae2f_restrict
const delta
ae2f_LP(mlp::m_sz[fin])
345inline void ae2f_TMP Train(
347 ,
const ae2f_float_t* ae2f_restrict
const inp
ae2f_LP(mlp::m_sz[0])
348 , ae2f_float_t* ae2f_restrict
const out
ae2f_LP(mlp::m_sz[fin])
349 ,
const ae2f_float_t* ae2f_restrict
const out_desired
ae2f_LP(mlp::m_sz[fin])
354inline void ae2f_TMP TrainStream(
356 ,
const ae2f_float_t* ae2f_restrict
const inp
ae2f_LP(mlp::m_sz[0])
357 , ae2f_float_t* ae2f_restrict
const out
ae2f_LP(mlp::m_sz[fin])
358 ,
const ae2f_float_t* ae2f_restrict
const out_desired
ae2f_LP(mlp::m_sz[fin])
363inline void ae2f_TMP TrainAuto(
365 ,
const ae2f_float_t* ae2f_restrict
const inp
ae2f_LP(mlp::m_sz[0])
366 ,
const ae2f_float_t* ae2f_restrict
const out_desired
ae2f_LP(mlp::m_sz[fin])
371inline void ae2f_TMP TrainAutoStream(
373 ,
const ae2f_float_t* ae2f_restrict
const inp
ae2f_LP(mlp::m_sz[0])
374 ,
const ae2f_float_t* ae2f_restrict
const out_desired
ae2f_LP(mlp::m_sz[fin])
382#define __ae2f_AnnMlpTrain_C(reterr, mlp, inp, out, out_desired)
385#define __ae2f_AnnMlpTrainStream_C(reterr, mlp, inp, out, out_desired)
388#define __ae2f_AnnMlpTrain_imp(v_train, mlp, inp, out, goal, lenv, outstream, deltacache, weight, bias, lr_w, lr_b, act, actderiv, lossderiv)
389 __ae2f_AnnMlpTrainPrimal_imp(&1
? 0
: 1
, &1
, v_train, mlp, inp, out, goal, lenv, outstream, deltacache, weight, bias, lr_w, lr_b, act, actderiv, lossderiv)
391#define __ae2f_AnnMlpTrainStream_imp(v_train, mlp, inp, out, goal, lenv, outstream, deltacache, weight, bias, lr_w, lr_b, act, actderiv, lossderiv)
392 __ae2f_AnnMlpTrainPrimal_imp(-1
, ae2f_NONE, v_train, mlp, inp, out, goal, lenv, outstream, deltacache, weight, bias, lr_w, lr_b, act, actderiv, lossderiv)
396#define __ae2f_AnnMlpTrainAuto_C(reterr, mlp, inp, out_desired)
400#define __ae2f_AnnMlpTrainAutoStream_C(reterr, mlp, inp, out_desired)
#define ae2f_AnnActDerivFFN_PASS(r, o, i, c)
#define ae2f_AnnActFFN_PASS(r, o, i, c)
#define ae2f_structdef(key, name)
#define ae2f_reinterpret_cast(t, v)
#define unless(...)
Invokes when condition is false.
#define ae2f_extern
Suggests the existence of external variable or function, in naming of C. [non-mangling].
#define ae2f_structdef_n(key, name,...)
#define ae2f_reg
Register keyword.
#define ae2f_WhenCXX(...)
Appears when the current language is C.
#define ae2f_NONE
Literally nothing.
#define ae2f_errGlob_ALLOC_FAILED
stdlib allocating functions (malloc, calloc, realloc) has been failed.
uint8_t ae2f_err_t
Informs that this number represents the error.
#define ae2f_errGlob_PTR_IS_NULL
Failed to refer the pointer either l-value inside the function.
#define ae2f_errGlob_IMP_NOT_FOUND
Failed to find the function on preprocessor which is callable for some reason No operation has beed d...
#define __ae2f_MACRO_GENERATED
#define __ae2f_AnnMlpSz_imp(ret_sz, outc, weightc, depth, szswap, act, actderiv, deltastream, outcache, weight, bias)
#define __ae2f_AnnMlpMk_C(reterr, retmk, depth, szvector, szswap_opt, act, actderiv, lossderiv, deltastream, outcache, weight, bias, learningrate, learningrate_bias, offset, extra)
#define __ae2f_AnnMlpBwd_imp(v_tmp, v_send, slp_then, retdelta_then, deltaseed, actderiv_then, inp)
delta to delta
#define __ae2f_AnnMlpHidDeltaSingle_imp(v_single, slp, weight, delta, iidx)
#define __ae2f_AnnMlpPredictStream_imp(v_predict, mlp, inp, out, sz, weight, bias, outcache, act_opt)
#define __ae2f_AnnMlpMk_imp(reg_mk, prm_depth, pprm_szvector, propptr_szswap_opt, lppfn_act_opt, lppfn_actderiv_opt, pfn_lossderiv, propptr_deltastream_opt, propptr_outcache_opt, propptr_weight_opt, propptr_bias_opt, prm_learningrate, prm_learningrate_bias, prm_offset_opt, prm_extra_opt)
Automatically allocates ae2f_AnnMlp and store its pointer at (reg_mk).m_mkbase.
#define __ae2f_AnnMlpInitWithOutSz_imp(v_mlp, v_init, depth, outsz, weightsz, szvector, szswap_opt, act, actderiv, lossderiv, deltastream, outcache, weight, bias, learningrate, learningrate_bias)
#define __ae2f_AnnMlpPredictStream_C(reterr, mlp, inp, out)
#define __ae2f_AnnMlpPredict_C(reterr, mlp, inp, delta)
#define __ae2f_AnnMlpTrainPrimal(OPER_NEG, OPER_NONE, reterr, mlp, inp, out, out_desired)
#define __ae2f_AnnMlpFollowPrimal_imp(OPER_NEG, OPER_NONE, v_follow, mlp, inp, delta, lenv, outstream, deltacache, weight, bias, learningrate, learningrate_bias, actderiv)
#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
#define __ae2f_AnnMlpTrainAuto_C(reterr, mlp, inp, out_desired)
#define __ae2f_AnnMlpTrainAutoPrimal(OPER_NEG, OPER_NONE, reterr, mlp, inp, out_desired)
#define __ae2f_AnnMlpTrain_C(reterr, mlp, inp, out, out_desired)
#define __ae2f_AnnMlpTrainAutoStream_C(reterr, mlp, inp, out_desired)
#define __ae2f_AnnMlpDel_C(a)
#define __ae2f_AnnMlpPredictPrimal(OPER_NEG, OPER_NONE, reterr, mlp, inp, out)
#define __ae2f_AnnMlpTrainStream_C(reterr, mlp, inp, out, out_desired)
#define __ae2f_AnnMlpFollowPrimal(OPER_NEG, OPER_NONE, reterr, mlp, inp, delta)
#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)
#define __ae2f_AnnMlpFollowStream_C(reterr, mlp, inp, delta)
#define __ae2f_AnnMlpFollow_C(reterr, mlp, inp, delta)
#define ae2f_AnnMlpTrainAutoStream
#define ae2f_AnnMlpFollow
#define ae2f_AnnMlpPredict
#define ae2f_AnnMlpTrainStream
#define ae2f_AnnMlpFollowStream
#define ae2f_AnnMlpPredictStream
#define ae2f_AnnMlpTrainAuto
#define __ae2f_AnnSlpFollow_imp(reg_follow, prm_slp, pprm_in, pprm_delta, ptr_weight, ptr_bias, prm_learningrate, prm_learningrate_bias)
#define __ae2f_AnnSlpInit_imp(...)
#define __ae2f_AnnSlpFit_C(...)
#define __ae2f_AnnSlpFollow_C(...)
#define __ae2f_AnnSlpFollowOne_imp(reg_follow, pprm_in, pprm_delta, ptr_weight, prm_learningrate, prm_learningrate_bias, prm_isz, prm_oidx, rret_bias)
#define __ae2f_AnnSlpMk_imp(...)
#define __ae2f_AnnSlpFetchDelta_imp(tmp_delta, prm_slp, pprm_out, pprm_out_desired, fn_actderiv, fn_lossderiv, pret_delta)
#define __ae2f_AnnSlpTrainVerbose_imp(ram_train, reg_train, prm_slp, pprm_inp, pret_out, ptr_out_cache, pprm_out_desired, ptr_weights, ptr_bias, ptr_cachedelta, fn_act, fn_actderiv, fn_lossderiv, prm_learningrate, prm_learningrate_bias)
#define __ae2f_AnnSlpPredict(err_opt, _this, prm_in, out, out_cache, weight, bias, act_opt)
#define __ae2f_AnnSlpFitVerbose_imp(ram_fit, reg_fit, prm_slp, pprm_inp, pprm_out, pprm_out_desired, ptr_weights, ptr_bias, ptr_cachedelta, fn_actderiv, fn_lossderiv, prm_learningrate, prm_learningrate_bias)
#define __ae2f_AnnSlpInit(...)
#define __ae2f_AnnSlpFit(reterr_opt, _this, prm_inp, prm_out, prm_out_desired, weights, bias, cachedelta, actderiv_opt, lossderiv, learningrate, learningrate_bias)
#define __ae2f_AnnSlpFetchDelta_C(...)
#define __ae2f_AnnSlpDel_C
#define __ae2f_AnnSlpTrain_C
#define __ae2f_AnnSlpInit_C
#define __ae2f_AnnSlpFetchDeltaVerbose_imp(ram_delta, reg_delta, prm_slp, pprm_out, pprm_out_desired, fn_actderiv, fn_lossderiv, pret_delta)
#define __ae2f_AnnSlpFollow(reterr_opt, _this, prm_in, delta, weight, bias, learningrate, learningrate_bias)
#define __ae2f_AnnSlpPredict_imp(reg_predict, prmreg_slp, pprm_in, ret, ptr_outcache, pprm_weight, pprm_bias, fn_act)
#define __ae2f_AnnSlpTrain(err, slp, inp, out_cache, out_desired, weights, bias, cachedelta, act, actderiv, lossderiv, learningrate, learningrate_bias)
#define __ae2f_AnnSlpInitInpSz_imp(...)
#define __ae2f_AnnSlpMk(...)
#define __ae2f_AnnSlpMk_C
#define __ae2f_AnnSlpPredict_C(...)
#define ae2f_AnnSlpPredict
#define ae2f_AnnSlpFollow