没有停止程序的python警告异常

时间:2017-12-07 20:52:05

标签: python numpy overflow

我在做神经网络时遇到这个错误,当我在激活函数(sigmoid)中传递我的节点时会出现这个错误,我怀疑错误是因为它是一个卷积神经网络,所以卷积层使用ReLU作为激活功能,可以使数字真的很大;在我的sigmoid函数中:

def sigmoid(x):
    return 1 / (1 + np.exp(-x))

def sigmoidprime(x):
    return np.exp(-x) / ((1 + np.exp(-x))**2)

在函数中,x是我的节点,但有时候数字可以变得非常大,因为sigmoid函数实际上只在0和1之间有用,我相信这是什么引起错误但是当我尝试单个时非常大的数字,它不会引起错误,加上,错误实际上并没有停止我的程序。我想知道的是如何防止异常,如果我的激活函数被传递,即使出现错误

  

警告(来自警告模块):     文件" C:\ Python27 \ saves \ CNN \ CNN_flat_layer.py",第17行       return np.exp(-x)/((1 + np.exp(-x))** 2)   运行时警告:在exp

中遇到溢出      

警告(来自警告模块):     文件" C:\ Python27 \ saves \ CNN \ CNN_flat_layer.py",第17行       return np.exp(-x)/((1 + np.exp(-x))** 2)   运行时警告:在方块中遇到溢出

     

警告(来自警告模块):     文件" C:\ Python27 \ saves \ CNN \ CNN_flat_layer.py",第17行       return np.exp(-x)/((1 + np.exp(-x))** 2)   运行时警告:除法中遇到无效值

1 个答案:

答案 0 :(得分:0)

在这种情况下,第一个警告是要注意的警告。如果x的绝对值非常小或大于np.exp(x)的结果可能大于或小于其dtype可以容纳的结果。它是溢出错误的事实表明这很可能发生了什么