Perceptron reçoit plusieurs signaux en tant qu'entrées et émet un signal. Le signal Perceptron est une valeur binaire de 1 ou 0. Cette fois, je la décrirai correspondant à non fluide 0 et fluide 1.
AND
x1 | x2 | y |
---|---|---|
0 | 0 | 0 |
1 | 0 | 0 |
0 | 1 | 0 |
1 | 1 | 1 |
NAND
x1 | x2 | y |
---|---|---|
0 | 0 | 1 |
1 | 0 | 1 |
0 | 1 | 1 |
1 | 1 | 0 |
OR
x1 | x2 | y |
---|---|---|
0 | 0 | 0 |
1 | 0 | 1 |
0 | 1 | 1 |
1 | 1 | 1 |
--Définir la fonction ET
def AND(x1, x2)
w1, w2, theta = 0.5, 0.5, 0.7
temp = x1*w1+x2*w2
if tmp <= theta:
return 0
elif tmp > theta:
return 1
Les paramètres w1, w2 et theta sont initialisés dans la fonction et retournent 1 si la somme des entrées pondérées dépasse le seuil, sinon 0. Ensuite, vérifions si la sortie est comme indiqué dans la figure 2-2.
AND(0, 0) # 0
AND(1, 0) # 0
AND(0, 1) # 0
AND(1, 1) # 1
J'ai eu le comportement attendu.
De même, NAND et OR peuvent être mis en œuvre.
y = 0(b+w1x1+w2x2 <= 0)
1(b+w1x1+w2x2 > 0)
>>>import numpy as np
>>>x = np.array([0,1])
>>>w = np.array([0.5, 0.5])
>>>b = -0.7
>>>w*x
>>>array([0. , 0.5])
>>>np.sum(w*x)
0.5
>>>np.sum(w*x) + b
-0.19999999996
def AND(x1, x2):
x = np.array([x1, x2])
w = np.array([0.5, 0.5])
b = -0.7
tmp = np.sum(w*x) + b
if tmp <= 0:
return 0
else:
return 1
def NAND(x1, x2):
x = np.array([x1, x2])
w = np.array([-0.5, -0.5])
b = 0.7
tmp = np.sum(w*x) + b
if tmp <= 0
return 0
else:
return 1
def OR(x1, x2):
x = np.array([x1, x2])
w = np.array([0.5, 0.5])
b = -0.2
tmp = np.sum(w*x) + b
if tmp <= 0
return 0
else:
return 1
La porte XOR est un circuit logique, également appelé somme exclusive de logique.
OR
x1 | x2 | y |
---|---|---|
0 | 0 | 0 |
1 | 0 | 1 |
0 | 1 | 1 |
1 | 1 | 0 |
Il est difficile d'exprimer ce résultat dans une équation.
Perceptron ne pouvait pas représenter la porte XOR. Mais c'est possible en empilant des couches.
La porte XOR peut être représentée par la valeur de la combinaison de NAND et OR et AND.
XOR |x1|x2|s1|s2|y| |---|---|---| |0|0|1|0|0| |1|0|1|1|1| |0|1|1|1|1| |1|1|0|1|0|
def XOR(x1, x2):
s1 = NAND(x1, x2)
s2 = OR(x1, x2)
y = AND(s1, s2)
XOR(0, 0) # 0
XOR(1, 0) # 1
XOR(0, 1) # 1
XOR(1, 1) # 0
XOR est un perceptron à deux couches. Les perceptrons empilés multiples sont parfois appelés perceptrons multicouches. Il est possible d'exprimer de manière plus flexible en empilant des couches.
--Perceptron est un algorithme avec entrée et sortie. Étant donné une certaine entrée, une valeur fixe est sortie. --Dans Perceptron, [Weight] et [Bias] sont définis comme paramètres.
Recommended Posts