1#undef __ae2f_MACRO_GENERATED
2#define __ae2f_MACRO_GENERATED 1
7#undef __ae2f_MACRO_GENERATED
8#define __ae2f_MACRO_GENERATED 1
10#undef __ae2f_MACRO_GENERATED
11#define __ae2f_MACRO_GENERATED 1
15#include <ae2f/Macro.h>
16#undef __ae2f_MACRO_GENERATED
17#define __ae2f_MACRO_GENERATED 1
18#include <ae2f/Ann/Slp.h>
19#undef __ae2f_MACRO_GENERATED
20#define __ae2f_MACRO_GENERATED 1
26#include <ae2f/Ann/Mlp.h>
27#undef __ae2f_MACRO_GENERATED
28#define __ae2f_MACRO_GENERATED 1
40#define __ae2f_AnnMlpMk_C(
61){
62 if((reterr) && *(reterr)) {}
63 else unless((szvector) && (lossderiv) && (retmk))
69 , depth, szvector, szswap_opt
70 , act, actderiv, lossderiv
71 , deltastream, outcache, weight
72 , bias, learningrate, learningrate_bias
76 assert
(v_mk.m_mkbase && "Initialising has failed");
77 *(retmk) = v_mk.m_mkbase;
82}
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163#define __ae2f_AnnMlpMk_imp(
175 propptr_deltastream_opt,
176 propptr_outcache_opt,
180 prm_learningrate_bias,
183)\
184{
185 assert
((pprm_szvector) && "Size vector is null");
186 assert
((pfn_lossderiv) && "Loss deriv must be initialised");
187 assert
((prm_depth) > 2
&& "Depth must be greater than 2");
190 (reg_mk).m_weightc = 1
;
191 for((reg_mk).m_i = (prm_depth); (reg_mk).m_i--; ) {
192 assert
((pprm_szvector)[(reg_mk).m_i] && "Zero value is permitted");
193 (reg_mk).m_outc < (pprm_szvector)[(reg_mk).m_i] && ((reg_mk).m_outc = (pprm_szvector)[(reg_mk).m_i]);
194 if((reg_mk).m_i == (prm_depth) - 1
) continue;
196 (reg_mk).m_weightc < (pprm_szvector)[(reg_mk).m_i] * (pprm_szvector)[(reg_mk).m_i + 1
] ?
197 (pprm_szvector)[(reg_mk).m_i] * (pprm_szvector)[(reg_mk).m_i + 1
] :
206 , prm_depth, propptr_szswap_opt
207 , lppfn_act_opt, lppfn_actderiv_opt
208 , propptr_deltastream_opt, propptr_outcache_opt
209 , propptr_weight_opt, propptr_bias_opt
212 (reg_mk).m_mkptr.m_void = calloc(1
, (reg_mk).m_i + (prm_offset_opt) + (prm_extra_opt));
213 (reg_mk).m_mkbase = (reg_mk).m_mkptr.m_mlp;
215 if((reg_mk).m_mkptr.m_void) {
217 *(reg_mk).m_mkptr.m_mlp
225 , (reg_mk).m_mkptr.m_mlp + 1
)
229 , propptr_deltastream_opt
230 , propptr_outcache_opt
234 , prm_learningrate_bias
237 (reg_mk).m_mkptr.m_mlp += 1
;
238 (reg_mk).m_mkptr.m_byte += (prm_offset_opt);
239 (reg_mk).m_mkptr.m_sz += (prm_depth);
242 (reg_mk).m_mkbase->m_act = (reg_mk).m_mkptr.m_Act;
243 (reg_mk).m_mkptr.m_Act += (prm_depth) - 1
;
246 unless(lppfn_actderiv_opt) {
247 (reg_mk).m_mkbase->m_actderiv = (reg_mk).m_mkptr.m_Act;
248 (reg_mk).m_mkptr.m_Act += (prm_depth) - 1
;
251 unless(propptr_deltastream_opt) {
252 (reg_mk).m_mkbase->m_deltastream = (reg_mk).m_mkptr.m_f;
253 (reg_mk).m_mkptr.m_f += ((prm_depth) - 1
) * (reg_mk).m_outc;
256 unless(propptr_outcache_opt) {
257 (reg_mk).m_mkbase->m_outcache = (reg_mk).m_mkptr.m_f;
258 (reg_mk).m_mkptr.m_f += ((prm_depth) - 1
) * (reg_mk).m_outc;
261 unless(propptr_bias_opt) {
262 (reg_mk).m_mkbase->m_bias = (reg_mk).m_mkptr.m_f;
263 (reg_mk).m_mkptr.m_f += ((prm_depth) - 1
) * (reg_mk).m_outc;
266 unless(propptr_weight_opt) {
267 (reg_mk).m_mkbase->m_weight = (reg_mk).m_mkptr.m_f;
270}
272#define __ae2f_AnnMlpSz_imp(
288)\
289{
292 (ret_sz) = sizeof(ae2f_AnnMlp) + (!(szswap)) * sizeof(size_t);
293 (ret_sz) += (sizeof(void*) * ((depth) - 1
)) * (!(act) + !(actderiv));
294 (ret_sz) += sizeof(ae2f_float_t)
297 !(deltastream) + !(outcache) + !(bias)
299 (ret_sz) += sizeof(ae2f_float_t)
300 * (!(weight) * (weightc) * (depth)); \
301}
303#define __ae2f_AnnMlpInitWithOutSz_imp(
324)\
325{
326 assert
((depth) >= 2
&& "At lest you need input and output layer");
327 (v_mlp).m_depth = (depth);
328 (v_mlp).m_outc = (outsz);
329 (v_mlp).m_weightc = (weightsz);
331 assert
((lossderiv) && "loss deriv is null");
332 (v_mlp).m_lossderiv = lossderiv;
334 (v_mlp).m_sz = (szswap_opt);
335 (v_mlp).m_act = (act);
336 (v_mlp).m_actderiv = (actderiv);
338 (v_mlp).m_deltastream = deltastream;
339 (v_mlp).m_outcache = outcache;
340 (v_mlp).m_weight = weight;
341 (v_mlp).m_bias = bias;
343 (v_mlp).m_learningrate = learningrate;
344 (v_mlp).m_learningrate_bias = learningrate_bias;
346 if((szswap_opt) && (szswap_opt) != (szvector))
347 for((v_init) = (depth); (v_init)--; ) {
348 (szswap_opt)[(v_init)] = (szvector)[(v_init)];
350}
352#define __ae2f_AnnMlpInit_imp(
371)\
372{
374 (v_init).m_weightc = 0
;
376 assert
((szvector) && "Size vector is null");
377 for((v_init).m_i = (depth); (v_init).m_i--; ) {
378 assert
((szvector)[(v_init).m_i] && "Zero value is permitted");
379 (v_init).m_outc < (szvector)[(v_init).m_i] && ((v_init).m_outc = (szvector)[(v_init).m_i]);
380 if((v_init).m_i == (depth) - 1
) continue;
383 (v_init).m_weightc < (szvector)[(v_init).m_i] * (szvector)[(v_init).m_i + 1
] ?
384 (szvector)[(v_init).m_i] * (szvector)[(v_init).m_i + 1
] :
389 v_mlp, (v_init).m_i, depth, (v_mlp).m_outc, (v_mlp).m_weightc
390 , szvector, szswap_opt, act, actderiv, lossderiv
391 , deltastream, outcache, weight, bias, learningrate, learningrate_bias
393}
397#define __ae2f_AnnMlpPredictPrimal_imp(
411)\
412{
413 assert
((mlp).m_depth > 2
);
415 (v_predict).m_depth = (mlp).m_depth - 1
;
416 (v_predict).m_outc_max = (mlp).m_outc;
418 (v_predict).m_inc = (sz)[0
];
419 (v_predict).m_outc = (sz)[1
];
426 , ((outcache) + (0
OPER_NONE) * (v_predict).m_outc_max)
427 , ((outcache) + (0
OPER_NONE) * (v_predict).m_outc_max)
437 , ((outcache) + (0
OPER_NONE) * (v_predict).m_outc_max)
438 , ((outcache) + (0
OPER_NONE) * (v_predict).m_outc_max)
448 (v_predict).m_k < (v_predict).m_depth - 1
;
452 (v_predict).m_inc = (v_predict).m_outc;
453 (v_predict).m_outc = (sz)[(v_predict).m_k + 1
];
455 if((act_opt)[(v_predict).m_k]) {
456 assert
((v_predict).m_k);
457 assert
(((v_predict).m_k OPER_NEG) != ((v_predict).m_k OPER_NONE));
458 assert
(((v_predict).m_k OPER_NEG) == (((v_predict).m_k - 1
) OPER_NONE));
459 assert
((((v_predict).m_k + 1
) OPER_NEG) == (((v_predict).m_k) OPER_NONE));
464 , ((outcache) + (((v_predict).m_k OPER_NEG) * (v_predict).m_outc_max))
465 , ((outcache) + (((v_predict).m_k OPER_NONE) * (v_predict).m_outc_max))
466 , ((outcache) + (((v_predict).m_k OPER_NONE) * (v_predict).m_outc_max))
467 , (weight) + ((v_predict).m_k) * ((mlp).m_weightc)
468 , (bias) + ((v_predict).m_k) * (v_predict).m_outc_max
469 , (act_opt)[(v_predict).m_k]
476 ((v_predict).m_k OPER_NEG)
477 * (v_predict).m_outc_max
480 ((v_predict).m_k OPER_NONE)
481 * (v_predict).m_outc_max
484 ((v_predict).m_k OPER_NONE)
485 * (v_predict).m_outc_max
488 + (((v_predict).m_k) * (mlp).m_weightc)
489 , (bias) + ((v_predict).m_k) * (v_predict).m_outc_max
495 (v_predict).m_inc = (v_predict).m_outc;
496 (v_predict).m_outc = (sz)[(v_predict).m_k + 1
];
497 assert
((v_predict).m_k == (mlp).m_depth - 2
);
499 if((act_opt)[(v_predict).m_k]) {
503 , ((outcache) + ((((v_predict).m_k OPER_NEG)) * (v_predict).m_outc_max))
506 , (weight) + ((v_predict).m_k) * (v_predict).m_outc_max * (v_predict).m_outc_max
507 , (bias) + ((v_predict).m_k) * (v_predict).m_outc_max
508 , (act_opt)[(v_predict).m_k]
514 , ((outcache) + ((((v_predict).m_k OPER_NEG)) * (v_predict).m_outc_max))
517 , ((weight) + ((v_predict).m_k) * (mlp).m_weightc)
518 , ((bias) + ((v_predict).m_k) * (v_predict).m_outc_max)
522}
524#define __ae2f_AnnMlpPredictPrimal(
533) \
534{
535 if((reterr) && *(reterr))
537 else unless((mlp) && (inp) && (out)) {
541 ae2f_AnnMlpPredict_t v_predict;
547 , (mlp)->m_sz, (mlp)->m_weight
548 , (mlp)->m_bias, (mlp)->m_outcache
552}
554#define __ae2f_AnnMlpPredictStream_imp(v_predict, mlp, inp, out, sz, weight, bias, outcache, act_opt)
555 __ae2f_AnnMlpPredictPrimal_imp(-1
, , v_predict, mlp, inp, out, sz, weight, bias, outcache, act_opt)
557#define __ae2f_AnnMlpPredictStream_C(reterr, mlp, inp, out)
560#define __ae2f_AnnMlpPredict_imp(v_predict, mlp, inp, out, sz, weight, bias, outcache, act_opt)
561 __ae2f_AnnMlpPredictPrimal_imp(&1
? 0
: 1
, &1
, v_predict, mlp, inp, out, sz, weight, bias, outcache, act_opt)
563#define __ae2f_AnnMlpPredict_C(reterr, mlp, inp, delta)
566#define __ae2f_AnnMlpHidDeltaSingle_imp(
576)\
577{
578 (v_single).m_ret = 0
;
580 for((v_single).m_i = (slp).m_outc; (v_single).m_i--; )
583 ((weight) + (slp).m_inc * (v_single).m_i)[iidx] * (delta)[(v_single).m_i];
585}
588#define __ae2f_AnnMlpBwd_imp(
600)\
601{
602 for((v_send) = (slp_then).m_outc; (v_send)--;) {
603 actderiv_then(&(v_tmp), inp, v_send, (slp_then).m_outc);
604 (retdelta_then)[v_send] = (v_tmp) * (deltaseed)[v_send];
606}
608#define __ae2f_AnnMlpFollowStream_imp(v_follow, mlp, inp, delta, lenv, outstream, deltacache, weight, bias, lr_w, lr_b, actderiv)
609 __ae2f_AnnMlpFollowPrimal_imp(-1
,,v_follow, mlp, inp, delta, lenv, outstream, deltacache, weight, bias, lr_w, lr_b, actderiv)
612#define __ae2f_AnnMlpFollow_imp(v_follow, mlp, inp, delta, lenv, outstream, deltacache, weight, bias, lr_w, lr_b, actderiv)
613 __ae2f_AnnMlpFollowPrimal_imp(&1
? 0
: 1
,&1
, v_follow, mlp, inp, delta, lenv, outstream, deltacache, weight, bias, lr_w, lr_b, actderiv)
615#define __ae2f_AnnMlpFollowPrimal_imp(
632)\
633{
634 assert
(((mlp).m_depth > 2
) && "m_depth must be more than 1.");
635 assert
((inp) && "inp is null");
636 assert
((weight) && "weight is null");
637 assert
((bias) && "bias is null");
638 assert
((actderiv) && "actderiv list is null");
639 assert
((delta) && "delta is null");
643 (v_follow).m_k = (mlp).m_depth - 2
;
646 (v_follow).m_pg_out = (mlp).m_outc;
647 (v_follow).m_pg_weight = (mlp).m_weightc;
649 (v_follow).m_outc = (lenv)[(v_follow).m_k + 1
];
650 (v_follow).m_inc = (lenv)[(v_follow).m_k];
653
654
658 , ((outstream) + (v_follow).m_pg_out * ((v_follow).m_k - 1
))
660 , ((weight) + ((v_follow).m_pg_weight * ((v_follow).m_k)))
661 , ((bias) + ((v_follow).m_pg_out * ((v_follow).m_k)))
666 (v_follow).m_j = (v_follow).m_inc;
667 while((v_follow).m_j--) {
671 , ((weight) + ((v_follow).m_pg_weight * (v_follow).m_k))
676 ((deltacache) + (v_follow).m_pg_out * ((v_follow).m_k OPER_NEG))[(v_follow).m_j]
680 (v_follow).m_outc = (lenv)[(v_follow).m_k];
681 (v_follow).m_inc = (lenv)[(v_follow).m_k - 1
];
684 if((actderiv)[(v_follow).m_k - 1
]) {
687 , (v_follow).m_stack.m_send
689 , ((deltacache) + ((v_follow).m_pg_out * ((v_follow).m_k OPER_NEG)))
690 , ((deltacache) + ((v_follow).m_pg_out * ((v_follow).m_k OPER_NEG)))
691 , (actderiv)[(v_follow).m_k - 1
]
692 , ((outstream) + (v_follow).m_pg_out * ((v_follow).m_k - 1
))
697 , (v_follow).m_stack.m_send
699 , ((deltacache) + (((v_follow).m_pg_out) * ((v_follow).m_k OPER_NEG)))
700 , ((deltacache) + (((v_follow).m_pg_out) * ((v_follow).m_k OPER_NEG)))
702 , ((outstream) + (v_follow).m_pg_out * ((v_follow).m_k - 1
))
707 while(--(v_follow).m_k) {
708 assert
((v_follow).m_k);
709 assert
(((v_follow).m_k OPER_NEG) != ((v_follow).m_k OPER_NONE));
710 assert
(((v_follow).m_k OPER_NEG) == (((v_follow).m_k - 1
) OPER_NONE));
711 assert
((((v_follow).m_k + 1
) OPER_NEG) == (((v_follow).m_k) OPER_NONE));
714
715
719 , ((outstream) + (v_follow).m_pg_out * ((v_follow).m_k - 1
))
720 , ((deltacache) + (v_follow).m_pg_out * ((v_follow).m_k OPER_NONE))
721 , ((weight) + ((v_follow).m_pg_weight * (v_follow).m_k))
722 , ((bias) + ((v_follow).m_pg_out * ((v_follow).m_k)))
727 (v_follow).m_j = (v_follow).m_inc;
728 assert
((v_follow).m_inc == (lenv)[(v_follow).m_k]);
730 while((v_follow).m_j--) {
731 (v_follow).m_ret = 0
;
736 , ((weight) + (v_follow).m_pg_weight * ((v_follow).m_k))
737 , ((deltacache) + (v_follow).m_pg_out * ((v_follow).m_k OPER_NONE))
741 ((deltacache) + (v_follow).m_pg_out * ((v_follow).m_k OPER_NEG))[(v_follow).m_j]
745 (v_follow).m_outc = (v_follow).m_inc;
746 (v_follow).m_inc = (lenv)[(v_follow).m_k - 1
];
747 assert
((v_follow).m_outc == (lenv)[(v_follow).m_k]);
750 if((actderiv)[(v_follow).m_k - 1
]) {
753 , (v_follow).m_stack.m_send
755 , ((deltacache) + ((v_follow).m_pg_out * ((v_follow).m_k OPER_NEG)))
756 , ((deltacache) + ((v_follow).m_pg_out * ((v_follow).m_k OPER_NEG)))
757 , (actderiv)[(v_follow).m_k - 1
]
758 , ((outstream) + (v_follow).m_pg_out * ((v_follow).m_k - 1
))
763 , (v_follow).m_stack.m_send
765 , ((deltacache) + (((v_follow).m_pg_out) * ((v_follow).m_k OPER_NEG)))
766 , ((deltacache) + (((v_follow).m_pg_out) * ((v_follow).m_k OPER_NEG)))
768 , ((outstream) + (v_follow).m_pg_out * ((v_follow).m_k - 1
))
773 assert
(((v_follow).m_k) == 0
&& "(v_follow).m_k must be zero.");
774 assert
((v_follow).m_inc == (lenv)[0
] && "inc must be same as first element of lenv.");
775 assert
((v_follow).m_outc == (lenv)[1
] && "outc must be same as second element of lenv.");
781 , ((deltacache) + (v_follow).m_pg_out * ((v_follow).m_k OPER_NONE))
787}
789#define __ae2f_AnnMlpFollowPrimal(
798) \
799{
800 if((reterr) && *(reterr)) {}
801 else unless((mlp) && (inp) && (delta)) {
802 assert
(0
&& "nullref");
805 ae2f_AnnMlpFollow_t v_follow;
810 , *(mlp), inp, delta, (mlp)->m_sz
811 , (mlp)->m_outcache, (mlp)->m_deltastream
814 , (mlp)->m_learningrate, (mlp)->m_learningrate_bias
818}
820#define __ae2f_AnnMlpFollow_C(reterr, mlp, inp, delta)
823#define __ae2f_AnnMlpFollowStream_C(reterr, mlp, inp, delta)
826#define __ae2f_AnnMlpTrainPrimal_imp(
846)\
847{
848 assert
((lenv) && "lengh vector nil");
849 assert
(((mlp).m_depth > 2
) && "I see no hidden layer");
851 assert
((actderiv) && "actderiv list");
853 (v_train).m_inc = (lenv)[(mlp).m_depth - 3
];
854 (v_train).m_outc = (lenv)[(mlp).m_depth - 2
];
857 (v_train), mlp, inp, out, lenv,
858 weight, bias, outstream, act
861 if((actderiv)[(mlp).m_depth - 2
]) {
863 (v_train), (v_train), (out), (out_desired)
864 , (actderiv)[(mlp).m_depth - 2
]
866 , (&((deltacache)[(mlp).m_outc * (((mlp).m_depth - 2
) OPER_NONE)]))
870 (v_train), (v_train), (out), (out_desired)
873 , (&((deltacache)[(mlp).m_outc * (((mlp).m_depth - 2
) OPER_NONE)]))
880 , (&((deltacache)[(mlp).m_outc * (((mlp).m_depth - 2
) OPER_NONE)]))
882 , deltacache, weight, bias
883 , learningrate, learningrate_bias
886}
888#define __ae2f_AnnMlpTrainPrimal(
898)\
899{
900 if((reterr) && *(reterr));
901 else unless((mlp) && (out) && (out_desired) && (inp)) {
902 assert
(0
&& "nullref");
905 ae2f_AnnMlpTrain_t v_train;
908 , v_train, *(mlp), inp
910 , (mlp)->m_sz, (mlp)->m_outcache
911 , (mlp)->m_deltastream
912 , (mlp)->m_weight, (mlp)->m_bias
913 , (mlp)->m_learningrate, (mlp)->m_learningrate_bias
914 , (mlp)->m_act, (mlp)->m_actderiv, (mlp)->m_lossderiv
917}
919#define __ae2f_AnnMlpTrainAutoPrimal(
928)\
929{
930 if((reterr) && *(reterr));
931 else unless((mlp) && (out_desired) && (inp)) {
932 assert
(0
&& "nullref");
935 ae2f_AnnMlpTrain_t v_train;
938 , v_train, *(mlp), inp
939 , &(mlp)->m_outcache[((mlp)->m_outc) * ((mlp)->m_depth - 2
)]
941 , (mlp)->m_sz, (mlp)->m_outcache
942 , (mlp)->m_deltastream
943 , (mlp)->m_weight, (mlp)->m_bias
944 , (mlp)->m_learningrate, (mlp)->m_learningrate_bias
945 , (mlp)->m_act, (mlp)->m_actderiv, (mlp)->m_lossderiv
948}
951#define __ae2f_AnnMlpTrain_C(reterr, mlp, inp, out, out_desired)
954#define __ae2f_AnnMlpTrainStream_C(reterr, mlp, inp, out, out_desired)
957#define __ae2f_AnnMlpTrain_imp(v_train, mlp, inp, out, goal, lenv, outstream, deltacache, weight, bias, lr_w, lr_b, act, actderiv, lossderiv)
958 __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)
960#define __ae2f_AnnMlpTrainStream_imp(v_train, mlp, inp, out, goal, lenv, outstream, deltacache, weight, bias, lr_w, lr_b, act, actderiv, lossderiv)
961 __ae2f_AnnMlpTrainPrimal_imp(-1
, ae2f_NONE, v_train, mlp, inp, out, goal, lenv, outstream, deltacache, weight, bias, lr_w, lr_b, act, actderiv, lossderiv)
965#define __ae2f_AnnMlpTrainAuto_C(reterr, mlp, inp, out_desired)
969#define __ae2f_AnnMlpTrainAutoStream_C(reterr, mlp, inp, out_desired)
976#undef __ae2f_MACRO_GENERATED
978#define __ae2f_MACRO_GENERATED 0
#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