ae2f_docs
Mlp.h
Go to the documentation of this file.
1#ifndef Mlp_h
2#define Mlp_h
3
4#include "./Slp.auto.h"
5
6typedef void clMlpGetHD1_t(
7 ae2f_float_t* const r_delta,
8
9 const ae2f_float_t* const i_weight,
10 const ae2f_float_t* const i_delta,
11
12 const size_t i_iidx,
13 const size_t i_isz,
14 const size_t i_oidx,
15 const size_t i_osz
16 );
17
18/**
19 * @brief
20 * delta to delta
21 * Propagate
22 *
23 * @inp aka out_then
24 * @deltaseed
25 * */
26ae2f_MAC() clMlpRvrse(
27 ae2f_float_t v_tmp,
28
30
34
36
37 const ae2f_float_t* const i_inp,
38 const ae2f_float_t* const i_deltaseed
39 )
40{
41 if((i_iidx) < (i_isz) && !(i_oidx)) {
43 (r_delta_then)[i_iidx] = (v_tmp) * (i_deltaseed)[i_iidx];
44 }
45}
46
47ae2f_MAC() clMlpGetHD1_Q(
48 ae2f_float_t* const r_delta_then,
49
50 const ae2f_float_t* const i_weight,
51 const ae2f_float_t* const i_delta,
52
53 const size_t i_iidx,
54 const size_t i_isz,
55 const size_t i_oidx,
56 const size_t i_osz
57 )
58{
59 if((i_oidx) < (i_osz) && (i_iidx) < (i_isz)) {
60 (r_delta_then)[(i_iidx)]
62 (i_weight)[(i_isz) * (i_oidx) + (i_iidx)] * (i_delta)[i_oidx]
63 );
64 }
65}
66
67ae2f_MAC() clMlpGetHD1(
68 ae2f_float_t* const r_delta_then,
69
70 const ae2f_float_t* const i_weight,
71 const ae2f_float_t* const i_delta,
72
73 const size_t i_iidx,
74 const size_t i_isz,
75 const size_t i_oidx,
76 const size_t i_osz
77 )
78{
79 if((i_oidx) == 0 && (i_iidx) < (i_isz)) {
80 size_t v_oidx = (i_osz);
81 ae2f_float_t v_ret = 0;
82
83 while((v_oidx)--) {
84 (v_ret) += (i_weight)[(i_isz) * (v_oidx) + (i_iidx)] * (i_delta)[(v_oidx)];
85 }
86
87 (r_delta_then)[(i_iidx)] = (v_ret);
88 }
89}
90
91ae2f_MAC() clMlpGetHD(
92 clMlpGetHD1_t ONE,
93 ae2f_float_t* const r_delta_then,
94
95 const ae2f_float_t* const i_weight,
96 const ae2f_float_t* const i_delta,
97
98 const size_t i_iidx,
99 const size_t i_isz,
100 const size_t i_oidx,
101 const size_t i_osz
102 )
103{
104 if((i_iidx) < (i_isz) && (i_oidx) < (i_osz)) {
105 ONE(r_delta_then, i_weight, i_delta, i_iidx, i_isz, i_oidx, i_osz);
106 }
107}
108
109/** @brief GetHidDelta Need no structure. */
110#define clMlpGetHD(...) _clMlpGetHD(CL_Q_CVRT(_clMlpGetHD1), __VA_ARGS__)
111
112
113#endif
void ae2f_AnnAct_t(ae2f_float_t *ret, ae2f_float_t x)
Customisable activasion function type.
Definition Act.h:19
ae2f_float ae2f_float_t
Definition Float.h:38
#define size_t
#define work_group_reduce_add(x)
#define CL_Q_CVRT(x)
Definition mac.h:12
#define ae2f_MAC()
delta to delta
Definition mac.h:4
ae2f_float_t *const r_delta_then
Definition Mlp.h:29
ae2f_float_t *const const size_t i_oidx
Definition Mlp.h:31
ae2f_float_t *const const size_t const size_t const size_t ae2f_AnnAct_t i_actderiv_then
Definition Mlp.h:35
ae2f_float_t *const const size_t const size_t const size_t ae2f_AnnAct_t const ae2f_float_t *const i_inp
Definition Mlp.h:37
ae2f_float_t *const const size_t const size_t const size_t i_isz
Definition Mlp.h:33
ae2f_float_t *const const size_t const size_t i_iidx
Definition Mlp.h:32