当前位置: 代码迷 >> 综合 >> 神经网络中的RuntimeWarning: divide by zero encountered in log问题
  详细解决方案

神经网络中的RuntimeWarning: divide by zero encountered in log问题

热度:20   发布时间:2023-09-22 21:38:24.0

在编程实现神经网络的时候,在将学习率α设置的比较大或者将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))

神经网络中的RuntimeWarning: divide by zero encountered in log问题

  • 学习率设置成0.001时的z值(wx+b)
    神经网络中的RuntimeWarning: divide by zero encountered in log问题
  • 学习率设置成0.2时的z值(wx+b)
    神经网络中的RuntimeWarning: divide by zero encountered in log问题
  • 学习率设置成0.001时的w,b值
    神经网络中的RuntimeWarning: divide by zero encountered in log问题
  • 学习率设置成0.2时的w,b值

神经网络中的RuntimeWarning: divide by zero encountered in log问题
总而言之,这个问题应该是w的值不合适造成的(太大或太小)。
因为源数据是64x64像素的图片,有64x64x3个features,w的变化对z值得影响很明显。

  相关解决方案