Я пытаюсь создать простую нейронную сеть, которая определяет ворота XOR в Python для моего назначения класса, но я продолжаю получать ошибку. Ниже приведен мой код и соответствующая ошибка:
logic_inputs = np.array(logic_inputs)
logic_inputs
class Layer():
def __init__(self, W, b):
self.m = W.shape[0]
self.n = W.shape[1]
self.W = W
self.b = b
def activate(self, X):
z = np.dot(X, self.W) + self.b
return sigmoid(z)
W1 = np.array([[20],
[20]])
b1 = np.array([[-30]])
W2 = np.array([[-20],
[-20]])
b2 = np.array([[10]])
hidden_layer = Layer(W1, b1)
output_layer = Layer(W2, b2)
class Network():
def __init__(self, hidden, output):
self.hidden = hidden
self.output = output
def activate(self, X):
z = self.hidden.activate(X)
return self.output.activate(z)
xor_gate = Network(hidden_layer, output_layer)
xor_output = xor_gate.activate(X)
np.round(xor_output)
Ошибка
ValueError Traceback (most recent call last)
<ipython-input-83-84793a680685> in <module>
40 xor_gate = Network(hidden_layer, output_layer)
41
---> 42 xor_output = xor_gate.activate(X)
43 np.round(xor_output)
<ipython-input-83-84793a680685> in activate(self, X)
36 z = self.hidden.activate(X)
37
---> 38 return self.output.activate(z)
39
40 xor_gate = Network(hidden_layer, output_layer)
<ipython-input-83-84793a680685> in activate(self, X)
11
12 def activate(self, X):
---> 13 z = np.dot(X, self.W) + self.b
14 return sigmoid(z)
15
<__array_function__ internals> in dot(*args, **kwargs)
ValueError: shapes (4,1) and (2,1) not aligned: 1 (dim 1) != 2 (dim 0)