为什么无论什么我的MLP总是输出-1?

时间:2020-04-24 21:37:35

标签: python neural-network perceptron

我需要获取从单位平方统一生成的二维输入数据,然后基于两个假设函数h1(x) = w1^T*xh2(x) = w2^T*x的XOR将数据标记为1或-1,其中{ {1}}和w1 = [0, 1, -1]。从那里,我应该使用theta的sign函数通过三层多层感知器运行数据。由于某种原因,无论什么情况,我的MLP都会为所有点输出-1。我的错误在哪里?这是我的代码:

w2 = [0, 1, 1]

1 个答案:

答案 0 :(得分:0)

我知道了。对于节点22和23,计算必须在符号函数内,因此j for循环应如下所示:

for j in range(np.size(x,0)):
    node22[j] = np.sign(np.matmul(w1,x[j,:]))
    node23[j] = np.sign(np.matmul(w2,x[j,:]))
    node32[j] = np.sign(-1.5 + node22[j] - node23[j])
    node33[j] = np.sign(-1.5 - node22[j] + node23[j])
    out[j] = np.sign(1.5 + node32[j] + node33[j])
'''