-
Notifications
You must be signed in to change notification settings - Fork 4
/
cell.h
138 lines (114 loc) · 2.44 KB
/
cell.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
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
#ifndef AIFI__CELL
#define AIFI__CELL
/* <INCLUDE> *************/
#include "popc.h"
#include "activation.h"
#include "loss.h"
#include "optimization.h"
/* </INCLUDE> ************/
/* <DEFINE> *************/
//#define REQUIRED STUFFS HERE
/* </DEFINE> ************/
/* <CONST> *************/
//#define REQUIRED STUFFS HERE
/* </CONST> ************/
/* <TYPE> *************/
enumeration cellType {
ctInput,
ctHidden,
ctOutput,
ctConvolutional,
ctInputBackfed,
ctInputNoisy,
ctGenerativeAdversarial,
ctHiddenProbabilistic,
ctHiddenSpiking,
ctKernel,
ctMatchInputOutput,
ctMemory,
ctMemoryDifferent,
ctMemoryLongShortTerm,
ctMemoryLongTerm,
ctMemoryShortTerm,
ctRecurrent,
} cellType;
// <BASIC CELL COMPONENTS>
typedef int cellConnectionCount;
typedef double cellInput;
typedef double cellWeight;
typedef double cellOutput;
typedef double cellTarget;
typedef double cellError;
typedef double cellDeltaError;
typedef double cellBias;
typedef double cellDeltaBias;
// </BASIC CELL COMPONENTS>
// <BASIC CELL>
subject cell {
cellConnectionCount connectionCount;
cellInput ptr inputt1d;
cellWeight ptr weight1d;
cellOutput output;
cellTarget target;
cellError error;
cellDeltaError deltaErrorGradient;
cellBias bias;
cellDeltaBias deltaBias;
activation actFn;
loss lossFn;
optimization optFn;
} cell;
// </BASIC CELL>
// <INPUT CELL>
subject inputCell {
cellInput input;
cellOutput output;
} inputCell;
// </INPUT CELL>
// <HIDDEN CELL>
subject hiddenCell {
cellConnectionCount connectionCount;
cellInput ptr inputt1d;
cellWeight ptr weight1d;
cellOutput output;
cellError error;
cellDeltaError deltaErrorGradient;
cellBias bias;
cellDeltaBias deltaBias;
activation actFn;
loss lossFn;
optimization optFn;
} hiddenCell;
// </HIDDEN CELL>
// <OUTPUT CELL>
subject outputCell {
cellConnectionCount connectionCount;
cellInput ptr inputt1d;
cellWeight ptr weight1d;
cellTarget Target;
cellOutput output;
cellError error;
cellDeltaError deltaErrorGradient;
cellBias bias;
cellDeltaBias deltaBias;
activation actFn;
loss lossFn;
optimization optFn;
} outputCell;
// </OUTPUT CELL>
pattern cellProto {
cell ptr (fnPtr cellNew) ();
void (fnPtr cellDel) (cell ptr c);
} cellProto;
/* </TYPE> ************/
/* <VARIABLE> *************/
/* </VARIABLE> ************/
/* <DECLARATION> *************/
#ifdef Cplusplus
extern "C" {
#endif
#ifdef Cplusplus
}
#endif
/* </DECLARATION> ************/
#endif