Subversion Repositories Kolibri OS

Rev

Rev 9733 | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 9733 Rev 9821
1
 
1
 
2
 
2
 
3
áèáëèîòåêà äëÿ ðàáîòû ñ íåéðîñåòüþ (neural network perceptron)
3
áèáëèîòåêà äëÿ ðàáîòû ñ íåéðîñåòüþ (neural network perceptron)
4
 
4
 
5
 
5
 
6
body
6
body
7
{
7
{
8
  font-size: 15px;
8
  font-size: 15px;
9
  font-family: "Bookman Old Style";
9
  font-family: "Bookman Old Style";
10
  color: black;
10
  color: black;
11
  text-align: justify;
11
  text-align: justify;
12
}
12
}
13
h1 { color: green; font-size: 23px; }
13
h1 { color: green; font-size: 23px; }
14
h2 { color: green; font-size: 21px; }
14
h2 { color: green; font-size: 21px; }
15
h3 { color: green; font-size: 19px; }
15
h3 { color: green; font-size: 19px; }
16
h4 { color: #803f00; font-size: 17px; }
16
h4 { color: #803f00; font-size: 17px; }
17
i { color: #0099cc; }
17
i { color: #0099cc; }
18
b { color: #0099cc; }
18
b { color: #0099cc; }
19
p {
19
p {
20
  text-indent: 1em;
20
  text-indent: 1em;
21
  margin-top: 3px;
21
  margin-top: 3px;
22
  margin-bottom: 2px;
22
  margin-bottom: 2px;
23
  margin-left: 0px;
23
  margin-left: 0px;
24
  margin-right: 0px;
24
  margin-right: 0px;
25
}
25
}
26
ol, ul, dl{
26
ol, ul, dl{
27
  margin-top: 3px;
27
  margin-top: 3px;
28
  margin-bottom: 2px;
28
  margin-bottom: 2px;
29
}
29
}
30
pre
30
pre
31
{
31
{
32
  padding: 2px;
32
  padding: 2px;
33
  padding-left: 20px;
33
  padding-left: 20px;
34
  margin-top: 5px;
34
  margin-top: 5px;
35
  margin-bottom: 5px;
35
  margin-bottom: 5px;
36
  margin-left: 0px;
36
  margin-left: 0px;
37
  margin-right: 0px;
37
  margin-right: 0px;
38
  font-family: "Courier New";
38
  font-family: "Courier New";
39
  font-size: 15px;
39
  font-size: 15px;
40
  color: #004000;
40
  color: #004000;
41
  background-color: #ffd0ff;
41
  background-color: #ffd0ff;
42
}
42
}
43
table { font-size: 15px; }
43
table { font-size: 15px; }
44
 
44
 
45
 
45
 
46
 
46
 
47
 
47
 
48
 
48
 
49

Îãëàâëåíèå

49

Îãëàâëåíèå

50
 
50
 
51
  • Âñòóïëåíèå
  • 51
  • Âñòóïëåíèå
  • 52
  • Ôóíêöèè
  • 52
  • Ôóíêöèè
  • 53
     
    53
     
    54
  • lib_init
  • 54
  • lib_init
  • 55
  • NNP_Create
  • 55
  • NNP_Create
  • -
     
    56
  • NNP_Reset
  • 56
  • NNP_FeedForward
  • 57
  • NNP_FeedForward
  • 57
  • NNP_BackPropagation
  • 58
  • NNP_BackPropagation
  • 58
  • NNP_GetMemData
  • 59
  • NNP_GetMemData
  • 59
  • NNP_SetMemData
  • 60
  • NNP_SetMemData
  • 60
  • NNP_Destroy
  • 61
  • NNP_Destroy
  • 61
     
    62
     
    62
     
    63
     
    63
  • Êîíñòàíòû
  • 64
  • Êîíñòàíòû
  • 64
  • Òàáëèöà ýêñïîðòà
  • 65
  • Òàáëèöà ýêñïîðòà
  • -
     
    66
  • Ïðèìåð
  • 65
  • Èñòîðèÿ
  • 67
  • Èñòîðèÿ
  • 66
     
    68
     
    67
     
    69
     
    68

    Âñòóïëåíèå

    70

    Âñòóïëåíèå

    69

    Äîêóìåíòàöèÿ ê áèáëèîòåêå nnp.obj, äëÿ ÎÑ Êîëèáðè. Ýòà áèáëèîòåêà ñîçäàíà äëÿ ðàáîòû ñ íåéðîñåòÿìè (neural network perceptron). Âèäåî ïî íåéðîñåòÿì: 1,

    71

    Äîêóìåíòàöèÿ ê áèáëèîòåêå nnp.obj, äëÿ ÎÑ Êîëèáðè. Ýòà áèáëèîòåêà ñîçäàíà äëÿ ðàáîòû ñ íåéðîñåòÿìè (neural network perceptron). Âèäåî ïî íåéðîñåòÿì: 1,

    70
    2. Èñõîäíûé êîä (ÿçûê java), íà îñíîâå êîòîðîãî äåëàëñü áèáëèîòåêà: 3.

    72
    2. Èñõîäíûé êîä (ÿçûê java), íà îñíîâå êîòîðîãî äåëàëñü áèáëèîòåêà: 3.

    71
     
    73
     
    72

    Ïîñëåäíåå îáíîâëåíèå áèáëèîòåêè 01.03.22.

    74

    Ïîñëåäíåå îáíîâëåíèå áèáëèîòåêè 28.05.22.

    73
     
    75
     
    74

    Ôóíêöèè

    76

    Ôóíêöèè

    75
     
    77
     
    76

    Âñå ôóíêöèè (êðîìå lib_init) 1-ì ïàðàìåòðîì ïðèíèìàþò óêàçàòåëü íà ñòðóêòóðó NeuralNetwork.

    78

    Âñå ôóíêöèè (êðîìå lib_init) 1-ì ïàðàìåòðîì ïðèíèìàþò óêàçàòåëü íà ñòðóêòóðó NeuralNetwork.

    77
     Îïèñàíèå ñòðóêòóðû NeuralNetwork:

    79
     Îïèñàíèå ñòðóêòóðû NeuralNetwork:

    78
    struct NeuralNetwork
    80
    struct NeuralNetwork
    79
    	learningRate  dq ? ;+ 0 ñêîðîñòü îáó÷åíèÿ
    81
    	learningRate  dq ? ;+ 0 ñêîðîñòü îáó÷åíèÿ
    80
    	layers        dd ? ;+ 8 [] ñëîè
    82
    	layers        dd ? ;+ 8 [] ñëîè
    81
    	layers_length dd ? ;+12 ÷èñëî ñëîåâ
    83
    	layers_length dd ? ;+12 ÷èñëî ñëîåâ
    82
    	activation    dd ? ;+16 óêàçàòåëü íà ôóíêöèþ àêòèâàöèè
    84
    	activation    dd ? ;+16 óêàçàòåëü íà ôóíêöèþ àêòèâàöèè
    83
    	derivative    dd ? ;+20 óêàçàòåëü íà ôóíêöèþ
    85
    	derivative    dd ? ;+20 óêàçàòåëü íà ôóíêöèþ
    84
    	errors        dd ? ;+24 ìàññèâ äëÿ âû÷èñëåíèé
    86
    	errors        dd ? ;+24 ìàññèâ äëÿ âû÷èñëåíèé
    85
    	errorsNext    dd ? ;+28
    87
    	errorsNext    dd ? ;+28
    86
    	gradients     dd ? ;+32
    88
    	gradients     dd ? ;+32
    87
    	deltas        dd ? ;+36
    89
    	deltas        dd ? ;+36
    88
    ends
    90
    ends
    89
     
    91
     
    90

    lib_init

    92

    lib_init

    91

    Ýòà ôóíêöèÿ ïîëó÷àåò óêàçàòåëè íà ôóíêöèè ðàáîòû ñ ïàìÿòüþ, âûçûâàòñÿ äîëæíà ïðè çàãðóçêå áèáëèîòåêè. Ìîæåòå èñïîëüçîâàòü ìàêðîñ @use_library, äëÿ åå àâòîìàòè÷åñêîé íàñòðîéêè.

    93

    Ýòà ôóíêöèÿ ïîëó÷àåò óêàçàòåëè íà ôóíêöèè ðàáîòû ñ ïàìÿòüþ, âûçûâàòñÿ äîëæíà ïðè çàãðóçêå áèáëèîòåêè. Ìîæåòå èñïîëüçîâàòü ìàêðîñ @use_library, äëÿ åå àâòîìàòè÷åñêîé íàñòðîéêè.

    92
     
    94
     
    93

    NNP_Create

    95

    NNP_Create

    94

    Ñîçäàåò ñëîè íåéðîñåòè è çàïîëíÿåò âåñà ñëó÷àéíûìè çíà÷åíèÿìè îò -1 äî 1. Ïðèìåð:

    96

    Ñîçäàåò ñëîè íåéðîñåòè è çàïîëíÿåò âåñà ñëó÷àéíûìè çíà÷åíèÿìè îò -1 äî 1. Ïðèìåð:

    95
    NNLOPT_LEN equ 7
    97
    NNLOPT_LEN equ 7
    96
    nnlopt dd 2,8,8,8,8,8,3
    98
    nnlopt dd 2,8,8,8,8,8,3
    97
    ...
    99
    ...
    98
    stdcall [NNP_Create], nnp_0, 0.01, 0, 0, nnlopt, NNLOPT_LEN
    100
    stdcall [NNP_Create], nnp_0, 0.01, 0, 0, nnlopt, NNLOPT_LEN
    99

    ãäå nnp_0 - ñòðóêòóðà áóôåðà.

    101

    ãäå nnp_0 - ñòðóêòóðà íåéðîñåòè.

    100

    0.01 - ñêîðîñòü îáó÷åíèÿ.

    102

    0.01 - ñêîðîñòü îáó÷åíèÿ.

    101

    0 - àäðåñ ôóíêöèè àêòèâàöèè, åñëè 0 òî áåðåòñÿ ñòàíäàðòíàÿ ôóíêöèÿ âíóòðè áèáëèîòåêè.

    103

    0 - àäðåñ ôóíêöèè àêòèâàöèè, åñëè 0 òî áåðåòñÿ ñòàíäàðòíàÿ ôóíêöèÿ âíóòðè áèáëèîòåêè.

    102

    0 - àäðåñ ôóíêöèè ñâ¸ðòêè, åñëè 0 òî áåðåòñÿ ñòàíäàðòíàÿ ôóíêöèÿ âíóòðè áèáëèîòåêè.

    104

    0 - àäðåñ ôóíêöèè ñâ¸ðòêè, åñëè 0 òî áåðåòñÿ ñòàíäàðòíàÿ ôóíêöèÿ âíóòðè áèáëèîòåêè.

    103

    nnlopt - ìàññèâ ñ ÷èñëîì íåéðîíîâ íà êàæäîì ñëîå.

    105

    nnlopt - ìàññèâ ñ ÷èñëîì íåéðîíîâ íà êàæäîì ñëîå.

    104

    NNLOPT_LEN - äëèííà ìàññèâà nnlopt.

    106

    NNLOPT_LEN - äëèííà ìàññèâà nnlopt.

    -
     
    107
     
    -
     
    108

    NNP_Reset

    -
     
    109

    Ñáðîñ ïàðàìåòðîâ íåéðîñåòè. Äëÿ êàæäîãî ñëîÿ áàçèñíûé âåêòîð è âåñà çàïîëíÿþòñÿ ñëó÷àéíûìè ÷èñëàìè îò -1 äî 1. Òàêèå æå äåéñòâèÿ ïðîèñõîäÿò â êîíñòðóêòîðå NNP_Create.

    -
     
    110
    stdcall [NNP_Reset], nnp_0
    -
     
    111

    ãäå nnp_0 - ñòðóêòóðà íåéðîñåòè.

    105
     
    112
     
    106

    NNP_FeedForward

    113

    NNP_FeedForward

    107

    Ôóíêöèÿ ðàñ÷åòà çíà÷åíèé âûõîäíûõ íåéðîíîâ. Íà âõîä ïîäàþòüñÿ çíà÷åíèÿ âõîäíûõ íåéðîíîâ. Íà âûõîäå âîçâðàùàåòñÿ óêàçàòåëü íà ñëîé âûõîäíûõ íåéðîíîâ.

    114

    Ôóíêöèÿ ðàñ÷åòà çíà÷åíèé âûõîäíûõ íåéðîíîâ. Íà âõîä ïîäàþòüñÿ çíà÷åíèÿ âõîäíûõ íåéðîíîâ. Íà âûõîäå âîçâðàùàåòñÿ óêàçàòåëü íà ñëîé âûõîäíûõ íåéðîíîâ.

    108
    n_input dq ?,?,?
    115
    n_input dq ?,?,?
    109
    ...
    116
    ...
    110
    stdcall [NNP_FeedForward], nnp_0,n_input
    117
    stdcall [NNP_FeedForward], nnp_0,n_input
    111

    ãäå nnp_0 - ñòðóêòóðà áóôåðà, n_input - óêàçàòåëü íà äàííûå âõîäíûõ íåéðîíîâ.

    118

    ãäå nnp_0 - ñòðóêòóðà íåéðîñåòè, n_input - óêàçàòåëü íà äàííûå âõîäíûõ íåéðîíîâ.

    112
     
    119
     
    113

    NNP_BackPropagation

    120

    NNP_BackPropagation

    114

    Ôóíêöèÿ äëÿ îáó÷åíèÿ ñåòè. Ïðèìåð:

    121

    Ôóíêöèÿ äëÿ îáó÷åíèÿ ñåòè. Ïðèìåð:

    115
    n_targ dq ?,?,?
    122
    n_targ dq ?,?,?
    116
    ...
    123
    ...
    117
    stdcall [NNP_BackPropagation], nnp_0, n_targ
    124
    stdcall [NNP_BackPropagation], nnp_0, n_targ
    118

    ãäå nnp_0 - ñòðóêòóðà áóôåðà, n_targ - óêàçàòåëü íà äàííûå äëÿ îáó÷åíèÿ ñåòè.

    125

    ãäå nnp_0 - ñòðóêòóðà íåéðîñåòè, n_targ - óêàçàòåëü íà äàííûå äëÿ îáó÷åíèÿ ñåòè.

    119
     
    126
     
    120

    NNP_GetMemData

    127

    NNP_GetMemData

    121

    Áåðåò äàííûå íåéðîñåòè è çàïèñûâàåò èõ â óêàçàííîå ìåñòî â ïàìÿòè. Ïðèìåð:

    128

    Áåðåò äàííûå íåéðîñåòè è çàïèñûâàåò èõ â óêàçàííîå ìåñòî â ïàìÿòè. Ïðèìåð:

    122
    f_data dd ?
    129
    f_data dd ?
    123
    ...
    130
    ...
    124
    stdcall [NNP_GetMemData], nnp_0, NNP_FF_JSON, [f_data]
    131
    stdcall [NNP_GetMemData], nnp_0, NNP_FF_JSON, [f_data]
    125

    ãäå nnp_0 - ñòðóêòóðà áóôåðà, f_data - óêàçàòåëü íà äàííûå äëÿ çàïèñè ïàðàìåòðîâ ñåòè.

    132

    ãäå nnp_0 - ñòðóêòóðà íåéðîñåòè, f_data - óêàçàòåëü íà äàííûå äëÿ çàïèñè ïàðàìåòðîâ ñåòè.

    126
     
    133
     
    127

    NNP_SetMemData

    134

    NNP_SetMemData

    128

    Áåðåò äàííûå èç óêàçàííîãî ìåñòà ïàìÿòè è çàïèñûâàåò èõ â íåéðîñåòü. Ïðèìåð:

    135

    Áåðåò äàííûå èç óêàçàííîãî ìåñòà ïàìÿòè è çàïèñûâàåò èõ â íåéðîñåòü.  ñëó÷àå óñïåõà â ðåãèñòðå eax âîçâðàùàåòñÿ 0, èíà÷å óêàçàòåëü íà ñòðîêó ñ òåêñòîì îøèáêè. Ïðèìåð:

    129
    f_data dd ?
    136
    f_data dd ?
    130
    ...
    137
    ...
    131
    stdcall [NNP_SetMemData], nnp_0, NNP_FF_JSON, [f_data]
    138
    stdcall [NNP_SetMemData], nnp_0, NNP_FF_JSON, [f_data]
    132

    ãäå nnp_0 - ñòðóêòóðà áóôåðà, f_data - óêàçàòåëü íà äàííûå ñ ïàðàìåòðàìè ñåòè.

    139

    ãäå nnp_0 - ñòðóêòóðà íåéðîñåòè, f_data - óêàçàòåëü íà äàííûå ñ ïàðàìåòðàìè ñåòè.

    133
     
    140
     
    134

    NNP_Destroy

    141

    NNP_Destroy

    135

    Îñâîáîæäàåò ïàìÿòü çàíÿòóþ íåéðîñåòüþ.

    142

    Îñâîáîæäàåò ïàìÿòü çàíÿòóþ íåéðîñåòüþ.

    136
     
    143
     
    137

    Êîíñòàíòû

    144

    Êîíñòàíòû

    138

    NNP_FF_BIN equ 0x6e6962

    145

    NNP_FF_BIN equ 0x6e6962

    139

    Êîíñòàíòà äëÿ ôóíêöèé NNP_GetMemData è NNP_SetMemData. Óêàçûâàåò áèíàðíûé ôîðìàò ââîäà è âûâîäà äàííûõ.

    146

    Êîíñòàíòà äëÿ ôóíêöèé NNP_GetMemData è NNP_SetMemData. Óêàçûâàåò áèíàðíûé ôîðìàò ââîäà è âûâîäà äàííûõ.

    140

    NNP_FF_JSON equ 0x6e6f736a

    147

    NNP_FF_JSON equ 0x6e6f736a

    141

    Êîíñòàíòà äëÿ ôóíêöèé NNP_GetMemData è NNP_SetMemData. Óêàçûâàåò òåêñòîâûé (JSON) ôîðìàò ââîäà è âûâîäà äàííûõ.

    148

    Êîíñòàíòà äëÿ ôóíêöèé NNP_GetMemData è NNP_SetMemData. Óêàçûâàåò òåêñòîâûé (JSON) ôîðìàò ââîäà è âûâîäà äàííûõ.

    142
     
    149
     
    143

    Òàáëèöà ýêñïîðòà

    150

    Òàáëèöà ýêñïîðòà

    144

    Ïðèìåð òàáëèöû ýêñïîðòà, ðàñ÷èòàííîé íà èñïîëüçîâàíèå ìàêðîñà @use_library_mem:

    151

    Ïðèìåð òàáëèöû ýêñïîðòà, ðàñ÷èòàííîé íà èñïîëüçîâàíèå ìàêðîñà @use_library_mem:

    145
    align 4
    152
    align 4
    146
    import_nnp_lib:
    153
    import_nnp_lib:
    147
    	dd sz_lib_init
    154
    	dd sz_lib_init
    148
    	NNP_Create dd sz_nnp_create
    155
    	NNP_Create      dd sz_create
    -
     
    156
    	NNP_Reset       dd sz_reset
    149
    	NNP_FeedForward dd sz_nnp_FeedForward
    157
    	NNP_FeedForward dd sz_feedforward
    150
    	NNP_BackPropagation dd sz_nnp_BackPropagation
    158
    	NNP_BackPropagation dd sz_backpropagation
    151
    	NNP_GetMemData dd sz_nnp_GetMemData
    159
    	NNP_GetMemData  dd sz_getmemdata
    152
    	NNP_SetMemData dd sz_nnp_SetMemData
    160
    	NNP_SetMemData  dd sz_setmemdata
    153
    	NNP_Destroy dd sz_nnp_Destroy
    161
    	NNP_Destroy     dd sz_destroy
    154
    	dd 0,0
    162
    dd 0,0
    155
    	sz_lib_init db 'lib_init',0
    163
    	sz_lib_init     db 'lib_init',0
    156
    	sz_nnp_create db 'NNP_Create',0
    164
    	sz_create       db 'NNP_Create',0
    -
     
    165
    	sz_reset        db 'NNP_Reset',0
    157
    	sz_nnp_FeedForward db 'NNP_FeedForward',0
    166
    	sz_feedforward  db 'NNP_FeedForward',0
    158
    	sz_nnp_BackPropagation db 'NNP_BackPropagation',0
    167
    	sz_backpropagation db 'NNP_BackPropagation',0
    159
    	sz_nnp_GetMemData db 'NNP_GetMemData',0
    168
    	sz_getmemdata   db 'NNP_GetMemData',0
    160
    	sz_nnp_SetMemData db 'NNP_SetMemData',0
    169
    	sz_setmemdata   db 'NNP_SetMemData',0
    161
    	sz_nnp_Destroy db 'NNP_Destroy',0
    170
    	sz_destroy      db 'NNP_Destroy',0
    162
     
    171
     
    163
     
    172
     
    164

    Èñòîðèÿ

    173

    Ïðèìåð

    -
     
    174

     äàííîì ïðèìåðå ñîçäàþòñÿ 8 îáúåêòîâ (òî÷åê ñ êîîðäèíàòàìè x, y), êàæäûé èç êîòîðûõ èìååò òèï 0 (ñèíèå) èëè 1 (çåëåíûå). Ïðè íàæàòèè êíîïêè ïðîèñõîäèò òðåíèðîâêà íåéðîñåòè.  ïðîöåññå òðåíèðîâêè íåéðîñåòü ó÷èòñÿ îïðåäåëÿòü êàêîé öâåò äîëæåí ñîîòâåòñòâîâàòü çàäàííûì êîîðäèíàòàì x, y. Òðåíèðîâàòü ñåòü ìîæíî ìíîãî ðàç, ÷èñëî öèêëîâ òðåíèðîâêè ïîêàçàíî â çàãîëîâêå îêíà. Êíîïêà ïåðåñòàâëÿåò òî÷êè ñëó÷àéíûì îáðàçîì. Êíîïêà ñáðàñûâàåò ñîñòîÿíèå íåéðîñåòè.

    -
     
    175
     
    -
     
    176

    Ðèñ. 1. Ïðèìåð èñïîëüçîâàíèÿ áèáëèîòåêè

    -
     
    177
     
    -
     
    178

    Èñòîðèÿ

    165

    01.03.22 - ñàìàÿ ïåðâàÿ âåðñèÿ áèáëèîòåêè (ïðèìåðû èñïîëüçîâàíèÿ âîçìîæíî áóäóò ïîçæå).

    179

    01.03.22 - ñàìàÿ ïåðâàÿ âåðñèÿ áèáëèîòåêè.

    166
     
    180

    28.05.22 - ïðèìåð èñïîëüçîâàíèÿ áèáëèîòåêè, íîâàÿ ôóíêöèÿ NNP_Reset, îáíîâëåíèå ôóíêöèè NNP_SetMemData.

    167
     
    181
     
    168
     
    182