ИЛИ выход с использованием сети Perceptron

Опубликовано: 24 Июля, 2021

Сети перцептронов относятся к однослойным сетям с прямой связью и также называются простыми перцептронами. Сеть персептрона состоит из трех единиц: сенсорной единицы (входной), ассоциативного (скрытого), ответного (выходного). Сенсорные блоки связаны с блоками-ассоциаторами с фиксированными весами, имеющими значения 1, 0 или -1, которые назначаются случайным образом.
Проблема состоит в том, чтобы реализовать или использовать сеть перцептронов с использованием кода C ++.




#include<iostream>
using namespace std;
int main()
{
//Array for Binary Input
int arr[4][2] = { {0,0},
{0,1},
{1,0},
{1,1}
};
//Target array for Binary Input
int t[4] = {0,1,1,1};
// Considering learning rate=1
int alp = 1;
// yi = input
// yo = output
int w1 = 0, w2 = 0, b = 0, count = 0, i, yi, yo;
int dw1,dw2,db;
while (1)
{
cout<< "x1" << " " << "x2" << " " << "b" << " " << "yi" << " " <<
"yo" << " " << "t" << " " << "dw1" << " " << "dw2" << " " << "db" <<
" " << "w1" << " " << "w2" << " " << "b" <<endl;
for (i = 0; i < 4; i++)
{
// Calaulating Input
yi = arr[i][0] * w1 + arr[i][1] * w2 + b;
if (yi >= 0)
{
yo = 1;
}
else
{
yo = 0;
}
if (t[i] == yo)
{
count++;
dw1 = 0;
dw2 = 0;
db = 0;
}
// Calaulating Change in Weight
else
{
dw1 = alp*(t[i] - yo) * arr[i][0];
dw2 = alp*(t[i] - yo) * arr[i][1];
db = alp*(t[i] - yo);
}
w1 = w1 + dw1;
w2 = w2 + dw2;
b = b + db;
cout<<arr[i][0]<< " " <<arr[i][1]<< " " <<1<< " " <<yi<< " " <<yo
<< " " <<t[i]<< " " <<dw1<< " " <<dw2<< " " <<db<< " " <<w1<< " " <<w2
<< " " <<b<<endl;
}
cout<<endl;
if (count == 4)
{
return 0;
}
else
{
count = 0;
}
}
}

Выход :

x1 x2 b yi yo t dw1 dw2 db w1 w2 b
0 0 1 0 1 0 0 0 -1 0 0 -1
0 1 1-1 0 1 0 1 1 0 1 0
1 0 1 0 1 1 0 0 0 0 1 0
1 1 1 1 1 1 0 0 0 0 1 0

x1 x2 b yi yo t dw1 dw2 db w1 w2 b
0 0 1 0 1 0 0 0 -1 0 1 -1
0 1 1 0 1 1 0 0 0 0 1 -1
1 0 1-1 0 1 1 0 1 1 1 0
1 1 1 2 1 1 0 0 0 1 1 0

x1 x2 b yi yo t dw1 dw2 db w1 w2 b
0 0 1 0 1 0 0 0 -1 1 1 -1
0 1 1 0 1 1 0 0 0 1 1 -1
1 0 1 0 1 1 0 0 0 1 1 -1
1 1 1 1 1 1 0 0 0 1 1 -1

x1 x2 b yi yo t dw1 dw2 db w1 w2 b
0 0 1-1 0 0 0 0 0 1 1-1
0 1 1 0 1 1 0 0 0 1 1 -1
1 0 1 0 1 1 0 0 0 1 1 -1
1 1 1 1 1 1 0 0 0 1 1 -1