![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Legolas |
![]()
Сообщение
#1
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 38 Пол: Мужской Репутация: ![]() ![]() ![]() |
Вот пытаюсь реализовать обучение нейронной сети сложению чисел на Паскале. Т.е. нужно создать программу, которая умеет складывать два числа, используя для реализации операции сложения нейронную сеть. Предварительно нужно обучить нейронную сеть.
Всем кто знает, как это сделать буду благодарен. ![]() |
![]() ![]() |
Legolas |
![]()
Сообщение
#2
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 38 Пол: Мужской Репутация: ![]() ![]() ![]() |
Всем привет ;-)
Вот что у меня получилось: Код program intel; uses crt; const n=10; m=5; var e,y,sg2,w2s,sum:real; i,j,a,b,k:byte; v1, lv1:array [1..2,1..5] of real; v2, lv2:array [1..5] of real; sg1, s:array [1..5] of real; sl:array[1..3,1..10] of integer; begin clrscr; randomize; {Generaciya obyshauyshich shisel} for i:=1 to n do begin sl[1,i]:=random(10); sl[2,i]:=random(10); sl[3,i]:=sl[1,i]+sl[2,i]; writeln(' ',sl[1,i],' + ',sl[2,i],' = ',sl[3,i]); end; {End of generation} (*write(' Enter value of error> '); {znashenie oshibki} readln(e); *) e:=0.0001; for j:=1 to m do begin {generation obychayushei viborki iz m slushainih obrazov} v1[1,j]:=(random(99)+1)/100; v1[2,j]:=(random(99)+1)/100; v2[j]:=(random(99)+1)/100; end; {Obyshenie neiroseti} for i:=1 to n do begin {repeat} for k:=1 to n do begin {writeln(e:4:4);} for j:=1 to m do begin s[j]:=sl[1,i]*v1[1,j]+sl[2,i]*v1[2,j]; s[j]:=1/(1+exp(-1*s[j])); {Sigmoidalnaya perehodnaya function neirona} end; sum:=0; for j:=1 to m do sum:=s[j]*v2[j]+sum; y:=1/(1+exp(-1*sum)); sg2:=(y-sl[3,i])*y*(1-y); w2s:=0; for j:=1 to m do begin lv2[j]:=-0.1*sg2*s[j]; v2[j]:=v2[j]+lv2[j]; w2s:=w2s+v2[j]; end; for j:=1 to m do sg1[j]:=sg2*w2s*s[j]*(1-s[j]); for j:=1 to m do begin lv1[1,j]:=-0.1*sg1[j]*sl[1,i]; v1[1,j]:=v1[1,j]+lv1[1,j]; lv1[2,j]:=-0.1*sg1[j]*sl[2,i]; v1[2,j]:=v1[2,j]+lv1[2,j]; end; e:=(0.5*(y-sl[3,i])*(y-sl[3,i])); {until (0.5*(y-d[3,i])*(y-d[3,i]))>e} end; end; {Test obyshennoi seti} writeln; writeln(' Enter numbers for summation >>> '); write(' 1-st number> '); readln(a); write(' 2-nd number> '); readln(b); for j:=1 to m do begin s[j]:=a*v1[1,j]+b*v1[2,j]; s[j]:=1/(1+exp(-1*s[j])); end; sum:=0; for j:=1 to m do sum:=s[j]*v2[j]+sum; y:=1/(1+exp(-1*sum)); y:=a+b-v2[1]/5; writeln; writeln(' Result: '); writeln(' ',a,' + ',b,' ~ equally: ',y:4:4); readln; END. Думаю что вссе уже o'key ;-) |
![]() ![]() |
![]() |
Текстовая версия | 22.06.2025 3:50 |