Всем кто знает, как это сделать буду благодарен.
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
| Legolas |
Сообщение
#1
|
|
Новичок ![]() Группа: Пользователи Сообщений: 38 Пол: Мужской Репутация: 0 |
Вот пытаюсь реализовать обучение нейронной сети сложению чисел на Паскале. Т.е. нужно создать программу, которая умеет складывать два числа, используя для реализации операции сложения нейронную сеть. Предварительно нужно обучить нейронную сеть.
Всем кто знает, как это сделать буду благодарен. |
![]() ![]() |
| Legolas |
Сообщение
#2
|
|
Новичок ![]() Группа: Пользователи Сообщений: 38 Пол: Мужской Репутация: 0 |
Всем привет ;-)
Вот что у меня получилось: Код 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 ;-) |
| -Максим- |
Сообщение
#3
|
|
Гость |
Всем привет ;-) Вот что у меня получилось: Код 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 ;-) Столько лет висит этот пример))). Но все равно спрошу))). Никого не смущает в примере строчка?: y:=1/(1+exp(-1*sum)); y:=a+b-v2[1]/5; То есть сначала получили выход нейросети, а потом его переписали на y=a + b - [случайное число из выборки] и ждем что что то у нас сойдется? А если без этой строчки, то выход y:=1/(1+exp(-1*sum)) - это сигмоид, который от 0 до 1, но ни как не даст ответ, например 1+1=2... Или я что то не понимаю... |
Legolas Нейронная сеть на Паскале 10.05.2006 9:11
lapp Забавно.
Дай какую-нить дополнительную инфу: основ… 10.05.2006 10:54
hardcase Предварительно нужно обучить нейронную сеть.
Нейр… 10.05.2006 11:13
arhimag А что такое нейронная сеть и по какому принципу до… 10.05.2006 11:27
Legolas Вот пример: Пример моделирования
Я делаю вот такую… 10.05.2006 12:22
hardcase Немного не понял. Какой смысл писать на Паскале то… 10.05.2006 18:23
Legolas Дело в том, что исходник на Дельфи не работает, да… 11.05.2006 13:33
hardcase Дело в том, что исходник на Дельфи не работает
Не… 11.05.2006 22:38
lapp Думаю что вссе уже o'key ;-)
Может и o'kAy… 12.05.2006 9:00

H0Bu40k сеансов изм.1 изм.2
10 8.7625 8.734… 17.09.2016 4:22

Гость
Думаю что вссе уже o'key ;-)
Может и o'kA… 17.09.2016 4:25
Legolas Да я и сам начал проходить нейросеть совсем недавн… 12.05.2006 12:04
-Михаил- Сильно наворочено...
Вот алгоритм простейшего перс… 4.02.2007 19:01
Гость люди помогите!!!! надо обучить одн… 18.04.2007 20:17![]() ![]() |
|
Текстовая версия | 23.11.2025 4:54 |