IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Нейронная сеть на Паскале, Как написать код
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 38
Пол: Мужской

Репутация: -  0  +


Вот пытаюсь реализовать обучение нейронной сети сложению чисел на Паскале. Т.е. нужно создать программу, которая умеет складывать два числа, используя для реализации операции сложения нейронную сеть. Предварительно нужно обучить нейронную сеть.
Всем кто знает, как это сделать буду благодарен. smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #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 ;-)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(Legolas @ 12.05.2006 3:42) *
Думаю что вссе уже o'key ;-)

Может и o'kAy, но я кое-чего не понимаю. Объясните, плз..
Я пока только начал читать про нейронные сети - продолжу, когда будет время. Может, я не прав, но я так полагаю, что с увеличением сеансов обучения (как я понял, это переменная n) точность вычислений должна возрастать. Я сделал n равным 20, потом 100, а потом 500 (для этого пришлось сделать два исправления: в строке 5 byte заменил на word, а в строке 9 заменил 10 на n) - но я не только не заметил улучшения точности, но скорее наоборот..
Вот результаты сложения 4+5 :

сеансов    изм.1    изм.2
10 8.7625 8.7340
20 8.7150 8.7103
100 8.5657 8.6292
500 8.3292 8.5291

Прослеживается явная тенденция отхода от истинной суммы. Кроме того, настораживает то, что все они меньше точного значения.
В чем дело?..

P.S.
Прошу простить, если спорол чушь - но я исходил из здравого смысла.. smile.gif


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Цитата(lapp @ 12.05.2006 9:00) *

Цитата(Legolas @ 12.05.2006 3:42) *
Думаю что вссе уже o'key ;-)

Может и o'kAy, но я кое-чего не понимаю. Объясните, плз..
Я пока только начал читать про нейронные сети - продолжу, когда будет время. Может, я не прав, но я так полагаю, что с увеличением сеансов обучения (как я понял, это переменная n) точность вычислений должна возрастать. Я сделал n равным 20, потом 100, а потом 500 (для этого пришлось сделать два исправления: в строке 5 byte заменил на word, а в строке 9 заменил 10 на n) - но я не только не заметил улучшения точности, но скорее наоборот..
Вот результаты сложения 4+5 :

сеансов    изм.1    изм.2
10 8.7625 8.7340
20 8.7150 8.7103
100 8.5657 8.6292
500 8.3292 8.5291

Прослеживается явная тенденция отхода от истинной суммы. Кроме того, настораживает то, что все они меньше точного значения.
В чем дело?..

P.S.
Прошу простить, если спорол чушь - но я исходил из здравого смысла.. smile.gif

Забыли про значение m, изменил n и m на 100. Начал считать намного лучше)
 К началу страницы 
+ Ответить 

Сообщений в этой теме
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
Legolas   Всем привет ;-) Вот что у меня получилось: progra…   12.05.2006 7:42
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
-Максим-   Всем привет ;-) Вот что у меня получилось: progr…   18.05.2020 17:00
Legolas   Да я и сам начал проходить нейросеть совсем недавн…   12.05.2006 12:04
-Михаил-   Сильно наворочено... Вот алгоритм простейшего перс…   4.02.2007 19:01
Гость   люди помогите!!!! надо обучить одн…   18.04.2007 20:17


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 30.04.2024 4:48
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name