Why can it be that my neural network is predicting the contrary?
After being all day trying to figure this out I had to post this question to find clarity.
The problem is here

dw = 1./m * dz.dot(activations[d].T)


it should be 

dw = 1./m * dz.dot(activations[d-1].T)