简体   繁体   中英

NaN in regression neural network

I was trying to build a NN on python to solve regression problem with inputs X (a,b) and output Y(c). Using leaky Relu as an activation function for hidden layer and linear function for the output layer. After 3-4 iterations nn seems to get burst with extremely larges/small numbers and results in NaN . The derivatives I have used are below. Maybe someone can help me - is the problems with my math or I should do more work to normalize X and Y prior to nn?

    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

Where

    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

And Relu derivative:

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

Thanks

Already have solved the problem by preprocessing the data.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM