1

我试图在python上构建一个NN来解决输入X(a,b)和输出Y(c)的回归问题。使用leaky 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

谢谢

4

1 回答 1

0

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

于 2020-07-04T06:43:45.517 回答