在编程实现神经网络的时候,在将学习率α设置的比较大或者将w用numpy.random.randn()初始化的时候,会遇到RuntimeWarning: divide by zero encountered in log警告。是因为sigmoid函数进行exp(-z)运算时,因为输入得z值太大(正值)或太小(负值),产生了内存溢出,最终得到的结果是nan。所以在cost函数中的log计算引发此警告。
cost = -1 / m * np.sum(Y * np.log(A) + (1 - Y) * np.log(1 - A))
- 学习率设置成0.001时的z值(wx+b)
- 学习率设置成0.2时的z值(wx+b)
- 学习率设置成0.001时的w,b值
- 学习率设置成0.2时的w,b值
总而言之,这个问题应该是w的值不合适造成的(太大或太小)。
因为源数据是64x64像素的图片,有64x64x3个features,w的变化对z值得影响很明显。