您好,我是编码新手,正在尝试研究神经网络,我一直在尝试获取一个项目的值,在该项目中我们使用基本代码检查异或门,但我被困在这里,有人可以帮忙吗?
W = np.array([[20],
[20]])
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)
OR_layer = Layer(W, -10)
输出: 数组([[0.], [1.], [1.], [1.]])
这可以很好地获取 OR 层,但是当尝试计算 XOR 层时,我收到错误>>>
W1 = np.array([[-20],[-20]])
b1 = np.array(30)
W2 = np.array([[20],[20]])
b2 = np.array(-30)
#print(np.dot(W1,b1))
hidden_layer = Layer(W1, b1)
output_layer = Layer(W2, b2)
#Based on the previous code, the weights and biases have been updated in the code
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(logic_inputs)#throwing error
np.round(xor_output)
此代码已损坏,我尝试修复它,但很难做到这一点。
输出应为: 数组([[0.], [1.], [1.], [0.]])>
此代码已损坏,我尝试修复它,但很难做到这一点。
隐藏层权重矩阵为
W1 = np.array([[-20],[-20]])
,形状为(2, 1),而输入数据的形状为(4, 2)
。因此,np.dot(X, self.W)
类内的点积Layer()
,维度与矩阵乘法不兼容。