【发布时间】:2018-04-13 03:52:47
【问题描述】:
我阅读了很多关于堆栈溢出的内容,但我仍然无法理解如何避免溢出错误。我正在构建一个使用sigmoid function 的神经网络。 但如果不转换或找到解决这些错误的方法,我就无法继续。
def activation(x):
return 1/(1+np.exp(-x))
def dactivation(x):
return activation(x)*(1-activation(x))
def propagateb(self, target, lrate=8.1, momentum=0.1):
deltas = []
error = target - self.layers[-1]
delta = error*dactivation(self.layers[-1])
deltas.append(delta)
for i in range(len(self.shape)-2,0,-1):
delta =np.dot(deltas[0],self.weights[i].T)*dactivation(self.layers[i])
deltas.insert(0,delta)
for i in range(len(self.weights)):
layer = np.atleast_2d(self.layers[i])
delta = np.atleast_2d(deltas[i])
dw = np.dot(layer.T,delta)
self.weights[i] += lrate*dw + momentum*self.dw[i]
self.dw[i] = dw
# Return error
return (error**2).sum()
提高
ann.py:5: RuntimeWarning: overflow encountered in exp
return 1/(1+np.exp(-x))
【问题讨论】: