形状 (4,1) 和 (2,1) 未对齐:1 (dim 1) != 2 (dim 0)

问题描述 投票:0回答:1

您好,我是编码新手,正在尝试研究神经网络,我一直在尝试获取一个项目的值,在该项目中我们使用基本代码检查异或门,但我被困在这里,有人可以帮忙吗?

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.]])>

此代码已损坏,我尝试修复它,但很难做到这一点。

python neural-network numpy-ndarray
1个回答
0
投票

隐藏层权重矩阵为

W1 = np.array([[-20],[-20]])
,形状为(2, 1),而输入数据的形状为
(4, 2)
。因此,
np.dot(X, self.W)
类内的点积
Layer()
,维度与矩阵乘法不兼容。

© www.soinside.com 2019 - 2024. All rights reserved.