Subversion Repositories Kolibri OS

Rev

Rev 9733 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. <html>
  2. <head>
  3. <title>áèáëèîòåêà äëÿ ðàáîòû ñ íåéðîñåòüþ (neural network perceptron)</title>
  4. <meta charset="WINDOWS-1251">
  5. <style>
  6. body
  7. {
  8.   font-size: 15px;
  9.   font-family: "Bookman Old Style";
  10.   color: black;
  11.   text-align: justify;
  12. }
  13. h1 { color: green; font-size: 23px; }
  14. h2 { color: green; font-size: 21px; }
  15. h3 { color: green; font-size: 19px; }
  16. h4 { color: #803f00; font-size: 17px; }
  17. i { color: #0099cc; }
  18. b { color: #0099cc; }
  19. p {
  20.   text-indent: 1em;
  21.   margin-top: 3px;
  22.   margin-bottom: 2px;
  23.   margin-left: 0px;
  24.   margin-right: 0px;
  25. }
  26. ol, ul, dl{
  27.   margin-top: 3px;
  28.   margin-bottom: 2px;
  29. }
  30. pre
  31. {
  32.   padding: 2px;
  33.   padding-left: 20px;
  34.   margin-top: 5px;
  35.   margin-bottom: 5px;
  36.   margin-left: 0px;
  37.   margin-right: 0px;
  38.   font-family: "Courier New";
  39.   font-size: 15px;
  40.   color: #004000;
  41.   background-color: #ffd0ff;
  42. }
  43. table { font-size: 15px; }
  44. </style>
  45. </head>
  46.  
  47. <body>
  48.  
  49. <h1>Îãëàâëåíèå</h1>
  50. <ul>
  51. <li>Âñòóïëåíèå</li>
  52. <li><a href="#fun">Ôóíêöèè</a><br>
  53. <ul>
  54. <li><a href="#f_init">lib_init</a></li>
  55. <li><a href="#f_create">NNP_Create</a></li>
  56. <li><a href="#f_reset">NNP_Reset</a></li>
  57. <li><a href="#f_feedf">NNP_FeedForward</a></li>
  58. <li><a href="#f_backp">NNP_BackPropagation</a></li>
  59. <li><a href="#f_getmd">NNP_GetMemData</a></li>
  60. <li><a href="#f_setmd">NNP_SetMemData</a></li>
  61. <li><a href="#f_destroy">NNP_Destroy</a></li>
  62. </ul>
  63. </li>
  64. <li><a href="#const">Êîíñòàíòû</a></li>
  65. <li><a href="#tabl_e">Òàáëèöà ýêñïîðòà</a></li>
  66. <li><a href="#ex1">Ïðèìåð</a></li>
  67. <li><a href="#hist">Èñòîðèÿ</a></li>
  68. </ul>
  69.  
  70. <h1>Âñòóïëåíèå</h1>
  71. <p>Äîêóìåíòàöèÿ ê áèáëèîòåêå <b>nnp.obj</b>, äëÿ <b>ÎÑ Êîëèáðè</b>. Ýòà áèáëèîòåêà ñîçäàíà äëÿ ðàáîòû ñ íåéðîñåòÿìè (neural network perceptron). Âèäåî ïî íåéðîñåòÿì: <a href="https://www.youtube.com/watch?v=GNcGPw_Kb_0">1</a>,
  72. <a href="https://www.youtube.com/watch?v=wzIOl4hWP3U">2</a>. Èñõîäíûé êîä (ÿçûê java), íà îñíîâå êîòîðîãî äåëàëñü áèáëèîòåêà: <a href="https://github.com/ArtemOnigiri/SimpleNN">3</a>.</p>
  73.  
  74. <p>Ïîñëåäíåå îáíîâëåíèå áèáëèîòåêè 28.05.22.</p>
  75.  
  76. <h1><a name="fun">Ôóíêöèè</a></h1>
  77.  
  78. <p>Âñå ôóíêöèè (êðîìå lib_init) 1-ì ïàðàìåòðîì ïðèíèìàþò óêàçàòåëü íà ñòðóêòóðó NeuralNetwork.
  79.  Îïèñàíèå ñòðóêòóðû NeuralNetwork:</p>
  80. <pre>struct NeuralNetwork
  81.         learningRate  dq ? ;+ 0 ñêîðîñòü îáó÷åíèÿ
  82.         layers        dd ? ;+ 8 [] ñëîè
  83.         layers_length dd ? ;+12 ÷èñëî ñëîåâ
  84.         activation    dd ? ;+16 óêàçàòåëü íà ôóíêöèþ àêòèâàöèè
  85.         derivative    dd ? ;+20 óêàçàòåëü íà ôóíêöèþ
  86.         errors        dd ? ;+24 ìàññèâ äëÿ âû÷èñëåíèé
  87.         errorsNext    dd ? ;+28
  88.         gradients     dd ? ;+32
  89.         deltas        dd ? ;+36
  90. ends</pre>
  91.  
  92. <h4><a name="f_init">lib_init</a></h4>
  93. <p>Ýòà ôóíêöèÿ ïîëó÷àåò óêàçàòåëè íà ôóíêöèè ðàáîòû ñ ïàìÿòüþ, âûçûâàòñÿ äîëæíà ïðè çàãðóçêå áèáëèîòåêè. Ìîæåòå èñïîëüçîâàòü ìàêðîñ <b>@use_library</b>, äëÿ åå àâòîìàòè÷åñêîé íàñòðîéêè.</p>
  94.  
  95. <h4><a name="f_create">NNP_Create</a></h4>
  96. <p>Ñîçäàåò ñëîè íåéðîñåòè è çàïîëíÿåò âåñà ñëó÷àéíûìè çíà÷åíèÿìè îò -1 äî 1. Ïðèìåð:</p>
  97. <pre>NNLOPT_LEN equ 7
  98. nnlopt dd 2,8,8,8,8,8,3
  99. ...
  100. stdcall [NNP_Create], nnp_0, 0.01, 0, 0, nnlopt, NNLOPT_LEN</pre>
  101. <p>ãäå nnp_0 - ñòðóêòóðà íåéðîñåòè.</p>
  102. <p>0.01 - ñêîðîñòü îáó÷åíèÿ.</p>
  103. <p>0 - àäðåñ ôóíêöèè àêòèâàöèè, åñëè 0 òî áåðåòñÿ ñòàíäàðòíàÿ ôóíêöèÿ âíóòðè áèáëèîòåêè.</p>
  104. <p>0 - àäðåñ ôóíêöèè ñâ¸ðòêè, åñëè 0 òî áåðåòñÿ ñòàíäàðòíàÿ ôóíêöèÿ âíóòðè áèáëèîòåêè.</p>
  105. <p>nnlopt - ìàññèâ ñ ÷èñëîì íåéðîíîâ íà êàæäîì ñëîå.</p>
  106. <p>NNLOPT_LEN - äëèííà ìàññèâà nnlopt.</p>
  107.  
  108. <h4><a name="f_reset">NNP_Reset</a></h4>
  109. <p>Ñáðîñ ïàðàìåòðîâ íåéðîñåòè. Äëÿ êàæäîãî ñëîÿ áàçèñíûé âåêòîð è âåñà çàïîëíÿþòñÿ ñëó÷àéíûìè ÷èñëàìè îò -1 äî 1. Òàêèå æå äåéñòâèÿ ïðîèñõîäÿò â êîíñòðóêòîðå NNP_Create.</p>
  110. <pre>stdcall [NNP_Reset], nnp_0</pre>
  111. <p>ãäå nnp_0 - ñòðóêòóðà íåéðîñåòè.</p>
  112.  
  113. <h4><a name="f_feedf">NNP_FeedForward</a></h4>
  114. <p>Ôóíêöèÿ ðàñ÷åòà çíà÷åíèé âûõîäíûõ íåéðîíîâ. Íà âõîä ïîäàþòüñÿ çíà÷åíèÿ âõîäíûõ íåéðîíîâ. Íà âûõîäå âîçâðàùàåòñÿ óêàçàòåëü íà ñëîé âûõîäíûõ íåéðîíîâ.</p>
  115. <pre>n_input dq ?,?,?
  116. ...
  117. stdcall [NNP_FeedForward], nnp_0,n_input</pre>
  118. <p>ãäå nnp_0 - ñòðóêòóðà íåéðîñåòè, n_input - óêàçàòåëü íà äàííûå âõîäíûõ íåéðîíîâ.</p>
  119.  
  120. <h4><a name="f_backp">NNP_BackPropagation</a></h4>
  121. <p>Ôóíêöèÿ äëÿ îáó÷åíèÿ ñåòè. Ïðèìåð:</p>
  122. <pre>n_targ dq ?,?,?
  123. ...
  124. stdcall [NNP_BackPropagation], nnp_0, n_targ</pre>
  125. <p>ãäå nnp_0 - ñòðóêòóðà íåéðîñåòè, n_targ - óêàçàòåëü íà äàííûå äëÿ îáó÷åíèÿ ñåòè.</p>
  126.  
  127. <h4><a name="f_getmd">NNP_GetMemData</a></h4>
  128. <p>Áåðåò äàííûå íåéðîñåòè è çàïèñûâàåò èõ â óêàçàííîå ìåñòî â ïàìÿòè. Ïðèìåð:</p>
  129. <pre>f_data dd ?
  130. ...
  131. stdcall [NNP_GetMemData], nnp_0, NNP_FF_JSON, [f_data]</pre>
  132. <p>ãäå nnp_0 - ñòðóêòóðà íåéðîñåòè, f_data - óêàçàòåëü íà äàííûå äëÿ çàïèñè ïàðàìåòðîâ ñåòè.</p>
  133.  
  134. <h4><a name="f_setmd">NNP_SetMemData</a></h4>
  135. <p>Áåðåò äàííûå èç óêàçàííîãî ìåñòà ïàìÿòè è çàïèñûâàåò èõ â íåéðîñåòü.  ñëó÷àå óñïåõà â ðåãèñòðå eax âîçâðàùàåòñÿ 0, èíà÷å óêàçàòåëü íà ñòðîêó ñ òåêñòîì îøèáêè. Ïðèìåð:</p>
  136. <pre>f_data dd ?
  137. ...
  138. stdcall [NNP_SetMemData], nnp_0, NNP_FF_JSON, [f_data]</pre>
  139. <p>ãäå nnp_0 - ñòðóêòóðà íåéðîñåòè, f_data - óêàçàòåëü íà äàííûå ñ ïàðàìåòðàìè ñåòè.</p>
  140.  
  141. <h4><a name="f_delete">NNP_Destroy</a></h4>
  142. <p>Îñâîáîæäàåò ïàìÿòü çàíÿòóþ íåéðîñåòüþ.</p>
  143.  
  144. <h1><a name="const">Êîíñòàíòû</a></h1>
  145. <h4>NNP_FF_BIN equ 0x6e6962</h4>
  146. <p>Êîíñòàíòà äëÿ ôóíêöèé NNP_GetMemData è NNP_SetMemData. Óêàçûâàåò áèíàðíûé ôîðìàò ââîäà è âûâîäà äàííûõ.</p>
  147. <h4>NNP_FF_JSON equ 0x6e6f736a</h4>
  148. <p>Êîíñòàíòà äëÿ ôóíêöèé NNP_GetMemData è NNP_SetMemData. Óêàçûâàåò òåêñòîâûé (JSON) ôîðìàò ââîäà è âûâîäà äàííûõ.</p>
  149.  
  150. <h1><a name="tabl_e">Òàáëèöà ýêñïîðòà</a></h1>
  151. <p>Ïðèìåð òàáëèöû ýêñïîðòà, ðàñ÷èòàííîé íà èñïîëüçîâàíèå ìàêðîñà <b>@use_library_mem</b>:</p>
  152. <pre>align 4
  153. import_nnp_lib:
  154.         dd sz_lib_init
  155.         NNP_Create      dd sz_create
  156.         NNP_Reset       dd sz_reset
  157.         NNP_FeedForward dd sz_feedforward
  158.         NNP_BackPropagation dd sz_backpropagation
  159.         NNP_GetMemData  dd sz_getmemdata
  160.         NNP_SetMemData  dd sz_setmemdata
  161.         NNP_Destroy     dd sz_destroy
  162. dd 0,0
  163.         sz_lib_init     db 'lib_init',0
  164.         sz_create       db 'NNP_Create',0
  165.         sz_reset        db 'NNP_Reset',0
  166.         sz_feedforward  db 'NNP_FeedForward',0
  167.         sz_backpropagation db 'NNP_BackPropagation',0
  168.         sz_getmemdata   db 'NNP_GetMemData',0
  169.         sz_setmemdata   db 'NNP_SetMemData',0
  170.         sz_destroy      db 'NNP_Destroy',0
  171. </pre>
  172.  
  173. <h1><a name="ex1">Ïðèìåð</a></h1>
  174. <p> äàííîì ïðèìåðå ñîçäàþòñÿ 8 îáúåêòîâ (òî÷åê ñ êîîðäèíàòàìè x, y), êàæäûé èç êîòîðûõ èìååò òèï 0 (ñèíèå) èëè 1 (çåëåíûå). Ïðè íàæàòèè êíîïêè <img src="but05.png"> ïðîèñõîäèò òðåíèðîâêà íåéðîñåòè.  ïðîöåññå òðåíèðîâêè íåéðîñåòü ó÷èòñÿ îïðåäåëÿòü êàêîé öâåò äîëæåí ñîîòâåòñòâîâàòü çàäàííûì êîîðäèíàòàì x, y. Òðåíèðîâàòü ñåòü ìîæíî ìíîãî ðàç, ÷èñëî öèêëîâ òðåíèðîâêè ïîêàçàíî â çàãîëîâêå îêíà. Êíîïêà <img src="but04.png"> ïåðåñòàâëÿåò òî÷êè ñëó÷àéíûì îáðàçîì. Êíîïêà <img src="but01.png"> ñáðàñûâàåò ñîñòîÿíèå íåéðîñåòè.</p>
  175. <p><img src="img01.png"></p>
  176. <p>Ðèñ. 1. Ïðèìåð èñïîëüçîâàíèÿ áèáëèîòåêè</p>
  177.  
  178. <h1><a name="hist">Èñòîðèÿ</a></h1>
  179. <p>01.03.22 - ñàìàÿ ïåðâàÿ âåðñèÿ áèáëèîòåêè.</p>
  180. <p>28.05.22 - ïðèìåð èñïîëüçîâàíèÿ áèáëèîòåêè, íîâàÿ ôóíêöèÿ NNP_Reset, îáíîâëåíèå ôóíêöèè NNP_SetMemData.</p>
  181. </body>
  182. </html>