我在做神经网络时遇到这个错误,当我在激活函数(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) 运行时警告:除法中遇到无效值
答案 0 :(得分:0)
在这种情况下,第一个警告是要注意的警告。如果x
的绝对值非常小或大于np.exp(x)
的结果可能大于或小于其dtype可以容纳的结果。它是溢出错误的事实表明这很可能发生了什么