Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 19.05.2019
Сообщений: 7

Написать программу "Обучение однослойного персептрона" на Pascal ABC

19.05.2019, 14:04. Показов 1401. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Обучение однослойного персептрона
Задание Сделать :
1. y=x1 v ¬x2 v x3
2. y=x1 ^ x2 ^ x3 ^ ¬x4 ^ x5
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.05.2019, 14:04
Ответы с готовыми решениями:

Обучение однослойного персептрона с учителем и без
Народ,подскажите кто знает.Хочу обучить персептрон принимать решения.на вход подаются какие то ситуации на выходе действие которое надо...

Обучение однослойного персептрона (Не хочет обучаться)
Здравствуйте программисты. Я создал однослойный персептрон для расшифровки чёрно-белых цифр. Вроде бы всё ничего, только сеть запоминает...

Написать программу, реализующую обучение персептрона по алгоритму Розенблатта
Персептрон. Задание: 1. Построить однослойный персептрон, обучить его таким образом, чтобы он разделял заданные множества точек (по...

4
 Аватар для Sun Serega
2355 / 1458 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
19.05.2019, 22:58
1.
Цитата Сообщение от sgh7777 Посмотреть сообщение
Pascal ABC
А вы пишите в раздел PascalABC.Net ... Это 2 разных языка, у которых похож только базовый синтаксис.

2.
Цитата Сообщение от sgh7777 Посмотреть сообщение
¬
Это что за символ?

И вообще, напишите задание нормально, какие ограничения, какой алгоритм использовать и т.п.
0
90 / 109 / 15
Регистрация: 26.01.2014
Сообщений: 710
19.05.2019, 23:26
А сам Персептрон уже реализован? Что обучать то?
Всегда твой - Etien
0
0 / 0 / 0
Регистрация: 19.05.2019
Сообщений: 7
20.05.2019, 01:03  [ТС]
Вообщем ребят, зашел правильно На Pascale ABC.NET Нужно написать , Задание Реализовать на однослойном персептроне логическую операцию y=x1 ^ x2 ^ x3 ^ ¬x4 ^ x5
Вот что я написал Ну в конце результат выдает неверно ПОМОГИТЕ ОТЛАДИТЬ ПЛИЗЗ!!
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
program obuch; {Имя программы}
uses crt; {Подключение модуля CRT}
var
 x1,x2,x3,x4,x5 : array [0..31] of integer; // входы (4 элемента в обучающей выборке)
 t     : array [0..31] of integer;        // теоретические выходы
 y     : array [0..31] of integer ;        // выходы
 w     : array [0..4] of integer;     // веса для 1-го слоя
 s     : integer;           // сумма
 por   : integer;          // порог
 
 i   : integer;             // номер итерации
 priznak : integer;     // Признак конца обучения
 pr  : array [0..31] of integer;
 
 k   : integer;
 
begin
 i:=0;
 priznak := 0;
 // Устанавливаем признаки = 0
 for i1:integer:=0 to 31 do
  pr[i1] := 0;
 
 // Задание обучающей выборки
 x1[0]:=0;  x2[0]:=0; x3[0]:=0;   x4[0]:=0;  x5[0]:=0;  t[0]:=0;
x1[1]:=0;  x2[1]:=0; x3[1]:=0;   x4[1]:=0;  x5[1]:=1;  t[1]:=0;
x1[2]:=0;  x2[2]:=0; x3[2]:=0;   x4[2]:=1;  x5[2]:=0;  t[2]:=0;
x1[3]:=0;  x2[3]:=0; x3[3]:=0;   x4[3]:=1;  x5[3]:=1;  t[3]:=0;
x1[4]:=0;  x2[4]:=0; x3[4]:=1;   x4[4]:=0;  x5[4]:=0;  t[4]:=0;
x1[5]:=0;  x2[5]:=0; x3[5]:=1;   x4[5]:=0;  x5[5]:=1;  t[5]:=0;
x1[6]:=0;  x2[6]:=0; x3[6]:=1;   x4[6]:=1;  x5[6]:=0;  t[6]:=0;
x1[7]:=0;  x2[7]:=0; x3[7]:=1;   x4[7]:=1;  x5[7]:=1;  t[7]:=0;
x1[8]:=0;  x2[8]:=1; x3[8]:=0;   x4[8]:=0;  x5[8]:=0;  t[8]:=0;
 
x1[9]:=0;  x2[9]:=1;  x3[9]:=0;  x4[9]:=0;  x5[9]:=1;  t[9]:=0;
x1[10]:=0; x2[10]:=1; x3[10]:=0; x4[10]:=1; x5[10]:=0; t[10]:=0;
x1[11]:=0; x2[11]:=1; x3[11]:=0; x4[11]:=1; x5[11]:=1; t[11]:=0;
x1[12]:=0; x2[12]:=1; x3[12]:=1; x4[12]:=0; x5[12]:=0; t[12]:=0;
x1[13]:=0; x2[13]:=1; x3[13]:=1; x4[13]:=0; x5[13]:=1; t[13]:=0;
x1[14]:=0; x2[14]:=1; x3[14]:=1; x4[14]:=1; x5[14]:=0; t[14]:=0;
x1[15]:=1; x2[15]:=1; x3[15]:=1; x4[15]:=1; x5[15]:=1; t[15]:=0;
x1[16]:=1; x2[16]:=0; x3[16]:=0; x4[16]:=0; x5[16]:=0; t[16]:=0;
 
x1[17]:=1; x2[17]:=0; x3[17]:=0; x4[17]:=0; x5[17]:=1; t[17]:=0;
x1[18]:=1; x2[18]:=0; x3[18]:=0; x4[18]:=1; x5[18]:=0; t[18]:=0;
x1[19]:=1; x2[19]:=0; x3[19]:=0; x4[19]:=1; x5[19]:=1; t[19]:=0;
x1[20]:=1; x2[20]:=0; x3[20]:=1; x4[20]:=0; x5[20]:=0; t[20]:=0;
x1[21]:=1; x2[21]:=0; x3[21]:=1; x4[21]:=0; x5[21]:=1; t[21]:=0;
x1[22]:=1; x2[22]:=0; x3[22]:=1; x4[22]:=1; x5[22]:=0; t[22]:=0;
x1[23]:=1; x2[23]:=0; x3[23]:=1; x4[23]:=1; x5[23]:=1; t[23]:=0;
x1[24]:=1; x2[24]:=1; x3[24]:=0; x4[24]:=0; x5[24]:=0; t[24]:=0;
 
x1[25]:=1; x2[25]:=1; x3[25]:=0; x4[25]:=0; x5[25]:=1; t[25]:=0;
x1[26]:=1; x2[26]:=1; x3[26]:=0; x4[26]:=1; x5[26]:=0; t[26]:=0;
x1[27]:=1; x2[27]:=1; x3[27]:=0; x4[27]:=1; x5[27]:=1; t[27]:=0;
x1[28]:=1; x2[28]:=1; x3[28]:=1; x4[28]:=0; x5[28]:=0; t[28]:=0;
x1[29]:=1; x2[29]:=1; x3[29]:=1; x4[29]:=0; x5[29]:=1; t[29]:=1;
x1[30]:=1; x2[30]:=1; x3[30]:=1; x4[30]:=1; x5[30]:=0; t[30]:=0;
x1[31]:=1; x2[31]:=1; x3[31]:=1; x4[31]:=1; x5[31]:=1; t[31]:=0;
 
 // Задание весов и порогов
 randomize();
 w[0] := random(10);
 w[1] := random(10);
 w[2] := random(10);
 w[3] := random(10);
 w[4] := random(10);
 por := random(10);
 
 k := 0; // Номер элемента из обучающей выборки
 while (priznak = 0) do
  begin
   writeln('Итерация=', i);
   for k:=0 to 31 do
    begin // начало цикла по числу элементов в обучающей выборке
     writeln('k=', k);
     writeln('w1=', w[0]);
     writeln('w2=', w[1]);
     writeln('w3=', w[2]);
     writeln('w4=', w[3]);
     writeln('w5=', w[4]);
     writeln('por=', por);
     writeln(' ');
 
     s := w[0]*x1[k] + w[1]*x2[k] + w[2]*x3[k]+ w[3]*x4[k]+ w[4]*x5[k]; // вычисляем сумму входов нейрона
     if (s >= por) // вычисляем выход нейрона
      then y[k] := 1
      else y[k] := 0;
     if (y[k] = t[k]) // проверка значения нейрона
      then begin
            pr[k] := 1; // Шаг 2а алгоритма
           end 
     else if (y[k] = 0)
           then begin // Добавление всех входов к весам (ШАГ 2б)
                 w[0] := w[0] + x1[k];
                 w[1] := w[1] + x2[k];
                 w[2] := w[2] + x3[k];
                 w[3] := w[3] + x4[k];
                 w[4] := w[4] + x5[k];
                 por := por - 1;
                 for j:integer:=0 to 31 do
                  pr[j] := 0; // сброс признака в связи с коррецией весов
                end
           else if (y[k] = 1)
                 then begin // Добавление всех входов к весам (ШАГ 2в)
                       w[0] := w[0] - x1[k];
                       w[1] := w[1] - x2[k];
                       w[2] := w[2] - x3[k];
                       w[2] := w[3] - x4[k];
                       w[2] := w[4] - x5[k];
                       por := por + 1;
                       for j:integer:=0 to 31 do
                        pr[j] := 0; // сброс признака в связи с коррецией весов
                      end;
    if ((pr[0] = 1) and (pr[1] = 1) and (pr[2] = 1) and (pr[3] = 1))
     then priznak := 1; // установка признака конца обучения
   end; // Конец цикла по числу элементов в обучающей выборке
  i := i + 1;
 end; // Конец цикла ПОКА priznak==0
 
 // Проверка
 writeln('w1=', w[0]);
 writeln('w2=', w[1]);
 writeln('w3=', w[2]);
 writeln('w4=', w[3]);
 writeln('w5=', w[4]);
 writeln('por=', por);
 writeln('Проверка:');
 for i:=0 to 31 do
  begin // Расчет и вывод результата
   s:=w[0]*x1[i]+w[1]*x2[i]+w[2]*x3[i]+w[3]*x4[i]+w[4]*x5[i];
   if (s>=por)
    then y[i]:=1
    else y[i]:=0;
   writeln('x1=', x1[i], ' x2=', x2[i], ' x3=', x3[i], ' x4=', x4[i], ' x5=', x5[i], ' y=', y[i]);
  end
end.
Добавлено через 2 минуты
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
program obuch; {Имя программы}
uses crt; {Подключение модуля CRT}
var
 x1,x2,x3,x4,x5 : array [0..31] of integer; // входы (4 элемента в обучающей выборке)
 t     : array [0..31] of integer;        // теоретические выходы
 y     : array [0..31] of integer ;        // выходы
 w     : array [0..4] of integer;     // веса для 1-го слоя
 s     : integer;           // сумма
 por   : integer;          // порог
 
 i   : integer;             // номер итерации
 priznak : integer;     // Признак конца обучения
 pr  : array [0..31] of integer;
 
 k   : integer;
 
begin
 i:=0;
 priznak := 0;
 // Устанавливаем признаки = 0
 for i1:integer:=0 to 31 do
  pr[i1] := 0;
 
 // Задание обучающей выборки
 x1[0]:=0;  x2[0]:=0; x3[0]:=0;   x4[0]:=0;  x5[0]:=0;  t[0]:=0;
x1[1]:=0;  x2[1]:=0; x3[1]:=0;   x4[1]:=0;  x5[1]:=1;  t[1]:=0;
x1[2]:=0;  x2[2]:=0; x3[2]:=0;   x4[2]:=1;  x5[2]:=0;  t[2]:=0;
x1[3]:=0;  x2[3]:=0; x3[3]:=0;   x4[3]:=1;  x5[3]:=1;  t[3]:=0;
x1[4]:=0;  x2[4]:=0; x3[4]:=1;   x4[4]:=0;  x5[4]:=0;  t[4]:=0;
x1[5]:=0;  x2[5]:=0; x3[5]:=1;   x4[5]:=0;  x5[5]:=1;  t[5]:=0;
x1[6]:=0;  x2[6]:=0; x3[6]:=1;   x4[6]:=1;  x5[6]:=0;  t[6]:=0;
x1[7]:=0;  x2[7]:=0; x3[7]:=1;   x4[7]:=1;  x5[7]:=1;  t[7]:=0;
x1[8]:=0;  x2[8]:=1; x3[8]:=0;   x4[8]:=0;  x5[8]:=0;  t[8]:=0;
 
x1[9]:=0;  x2[9]:=1;  x3[9]:=0;  x4[9]:=0;  x5[9]:=1;  t[9]:=0;
x1[10]:=0; x2[10]:=1; x3[10]:=0; x4[10]:=1; x5[10]:=0; t[10]:=0;
x1[11]:=0; x2[11]:=1; x3[11]:=0; x4[11]:=1; x5[11]:=1; t[11]:=0;
x1[12]:=0; x2[12]:=1; x3[12]:=1; x4[12]:=0; x5[12]:=0; t[12]:=0;
x1[13]:=0; x2[13]:=1; x3[13]:=1; x4[13]:=0; x5[13]:=1; t[13]:=0;
x1[14]:=0; x2[14]:=1; x3[14]:=1; x4[14]:=1; x5[14]:=0; t[14]:=0;
x1[15]:=1; x2[15]:=1; x3[15]:=1; x4[15]:=1; x5[15]:=1; t[15]:=0;
x1[16]:=1; x2[16]:=0; x3[16]:=0; x4[16]:=0; x5[16]:=0; t[16]:=0;
 
x1[17]:=1; x2[17]:=0; x3[17]:=0; x4[17]:=0; x5[17]:=1; t[17]:=0;
x1[18]:=1; x2[18]:=0; x3[18]:=0; x4[18]:=1; x5[18]:=0; t[18]:=0;
x1[19]:=1; x2[19]:=0; x3[19]:=0; x4[19]:=1; x5[19]:=1; t[19]:=0;
x1[20]:=1; x2[20]:=0; x3[20]:=1; x4[20]:=0; x5[20]:=0; t[20]:=0;
x1[21]:=1; x2[21]:=0; x3[21]:=1; x4[21]:=0; x5[21]:=1; t[21]:=0;
x1[22]:=1; x2[22]:=0; x3[22]:=1; x4[22]:=1; x5[22]:=0; t[22]:=0;
x1[23]:=1; x2[23]:=0; x3[23]:=1; x4[23]:=1; x5[23]:=1; t[23]:=0;
x1[24]:=1; x2[24]:=1; x3[24]:=0; x4[24]:=0; x5[24]:=0; t[24]:=0;
 
x1[25]:=1; x2[25]:=1; x3[25]:=0; x4[25]:=0; x5[25]:=1; t[25]:=0;
x1[26]:=1; x2[26]:=1; x3[26]:=0; x4[26]:=1; x5[26]:=0; t[26]:=0;
x1[27]:=1; x2[27]:=1; x3[27]:=0; x4[27]:=1; x5[27]:=1; t[27]:=0;
x1[28]:=1; x2[28]:=1; x3[28]:=1; x4[28]:=0; x5[28]:=0; t[28]:=0;
x1[29]:=1; x2[29]:=1; x3[29]:=1; x4[29]:=0; x5[29]:=1; t[29]:=1;
x1[30]:=1; x2[30]:=1; x3[30]:=1; x4[30]:=1; x5[30]:=0; t[30]:=0;
x1[31]:=1; x2[31]:=1; x3[31]:=1; x4[31]:=1; x5[31]:=1; t[31]:=0;
 
 // Задание весов и порогов
 randomize();
 w[0] := random(10);
 w[1] := random(10);
 w[2] := random(10);
 w[3] := random(10);
 w[4] := random(10);
 por := random(10);
 
 k := 0; // Номер элемента из обучающей выборки
 while (priznak = 0) do
  begin
   writeln('Итерация=', i);
   for k:=0 to 31 do
    begin // начало цикла по числу элементов в обучающей выборке
     writeln('k=', k);
     writeln('w1=', w[0]);
     writeln('w2=', w[1]);
     writeln('w3=', w[2]);
     writeln('w4=', w[3]);
     writeln('w5=', w[4]);
     writeln('por=', por);
     writeln(' ');
 
     s := w[0]*x1[k] + w[1]*x2[k] + w[2]*x3[k]+ w[3]*x4[k]+ w[4]*x5[k]; // вычисляем сумму входов нейрона
     if (s >= por) // вычисляем выход нейрона
      then y[k] := 1
      else y[k] := 0;
     if (y[k] = t[k]) // проверка значения нейрона
      then begin
            pr[k] := 1; // Шаг 2а алгоритма
           end 
     else if (y[k] = 0)
           then begin // Добавление всех входов к весам (ШАГ 2б)
                 w[0] := w[0] + x1[k];
                 w[1] := w[1] + x2[k];
                 w[2] := w[2] + x3[k];
                 w[3] := w[3] + x4[k];
                 w[4] := w[4] + x5[k];
                 por := por - 1;
                 for j:integer:=0 to 31 do
                  pr[j] := 0; // сброс признака в связи с коррецией весов
                end
           else if (y[k] = 1)
                 then begin // Добавление всех входов к весам (ШАГ 2в)
                       w[0] := w[0] - x1[k];
                       w[1] := w[1] - x2[k];
                       w[2] := w[2] - x3[k];
                       w[2] := w[3] - x4[k];
                       w[2] := w[4] - x5[k];
                       por := por + 1;
                       for j:integer:=0 to 31 do
                        pr[j] := 0; // сброс признака в связи с коррецией весов
                      end;
    if ((pr[0] = 1) and (pr[1] = 1) and (pr[2] = 1) and (pr[3] = 1))
     then priznak := 1; // установка признака конца обучения
   end; // Конец цикла по числу элементов в обучающей выборке
  i := i + 1;
 end; // Конец цикла ПОКА priznak==0
 
 // Проверка
 writeln('w1=', w[0]);
 writeln('w2=', w[1]);
 writeln('w3=', w[2]);
 writeln('w4=', w[3]);
 writeln('w5=', w[4]);
 writeln('por=', por);
 writeln('Проверка:');
 for i:=0 to 31 do
  begin // Расчет и вывод результата
   s:=w[0]*x1[i]+w[1]*x2[i]+w[2]*x3[i]+w[3]*x4[i]+w[4]*x5[i];
   if (s>=por)
    then y[i]:=1
    else y[i]:=0;
   writeln('x1=', x1[i], ' x2=', x2[i], ' x3=', x3[i], ' x4=', x4[i], ' x5=', x5[i], ' y=', y[i]);
  end
end.
0
 Аватар для Sun Serega
2355 / 1458 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
20.05.2019, 08:05
Я увидел тонну говнокода и отсутствие большинства ответов.

Цитата Сообщение от Sun Serega Посмотреть сообщение
что за символ?
Цитата Сообщение от Sun Serega Посмотреть сообщение
какие ограничения, какой алгоритм использовать и т.п.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.05.2019, 08:05
Помогаю со студенческими работами здесь

алгоритм ОДНОСЛОЙНОГО ПЕРСЕПТРОНА
Всем привет. Просьба тем, кто когда -либо писал программы "нейронные сети": подскажите алгоритм ОДНОСЛОЙННОГО ПЕРСЕПТРОНА. Прочел...

Написать программу на Pascal abc
Составить программу, которая а) описывает, следующую таблицу используя тип данных запись. б) находит количество студентов

Pascal ABC написать программу
1 Заданы вещественные числа x, y, z. Вычислить: (min^2(x+y+z/2 ; x*y*z)+1)/(max(x+y; y-z)) где min – есть меньшее по значению...

надо написать программу на С++ и на Pascal ABC
Привет! Помогите мне пожалуйста написать программу на С++ и на Pascal ABС Задание: Заполнить файл f натуральными числами, полученными с...

Pascal ABC: написать программу по блок-схеме!


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru