回归神经网络中的NaN

时间:2020-07-03 11:44:59

标签: python neural-network regression relu

我试图在python上构建NN,以解决输入X(a,b)和输出Y(c)的回归问题。 将泄漏的Relu用作隐藏层的激活函数和输出层的线性函数。经过3-4次迭代后,nn似乎以大/小数字爆发,结果为NaN。 我使用的衍生物如下。也许有人可以帮助我-是我的数学问题还是我应该在nn之前对X和Y进行归一化?

    dW2 = -2*(np.dot(dZ2,A1.transpose()))/m
    db2 = -2*(np.sum(dZ2, axis = 1, keepdims = True))/m
    drel = lrelu(Z1)
    dZ1 = (np.dot(W2.transpose(),dZ2))*(drel)
    dW1 = (np.dot(dZ1,X.transpose()))/m
    db1 = (np.sum(dZ1, axis = 1, keepdims = True))/m

哪里

    Z1 = np.dot(W1,X)+b1
    A1 = np.where(Z1 > 0, Z1, Z1 * 0.01)
    Z2 = np.dot(W2,A1)+b2
    A2 = Z2*1
    cost = np.sum(np.square(Y-A2))/m

和Relu导数:

def lrelu(rel):
    alpha = 0.01
    drel = np.ones_like(rel)
    drel[rel < 0] = alpha
    return drel

谢谢

1 个答案:

答案 0 :(得分:0)

已经通过预处理数据解决了这个问题。