Python 当使用RELU或泄漏RELU时,神经网络不收敛
我已经编写了一个简单的神经网络库,它可以创建一个任意大小的神经网络,并可以用给定的激活函数及其导数来训练网络。 该网络在使用sigmoid作为激活函数时表现良好,但从不与relu或泄漏relu收敛。 我使用二维网格上分离两组点的问题作为标准问题,以轻松检测网络是否收敛。 这是使用sigmoid解决问题的结果::Python 当使用RELU或泄漏RELU时,神经网络不收敛,python,machine-learning,neural-network,relu,Python,Machine Learning,Neural Network,Relu,我已经编写了一个简单的神经网络库,它可以创建一个任意大小的神经网络,并可以用给定的激活函数及其导数来训练网络。 该网络在使用sigmoid作为激活函数时表现良好,但从不与relu或泄漏relu收敛。 我使用二维网格上分离两组点的问题作为标准问题,以轻松检测网络是否收敛。 这是使用sigmoid解决问题的结果:: (x>0和y>0)或(x请不要将Python代码格式化为Javascript片段(已编辑)。嗨,你的num数组的条目有什么类型?顺便说一句,我认为你可以减少派生函数,使它们只使用一个wh
(x>0和y>0)或(x请不要将Python代码格式化为Javascript片段(已编辑)。嗨,你的
num
数组的条目有什么类型?顺便说一句,我认为你可以减少派生函数,使它们只使用一个where
。我会将LeakyRelu的派生函数更改为:num=np.where(numI已尝试在普通代码段中添加代码,但我的浏览器出现问题。很抱歉,Thanx for tipp jottbe:)请不要将Python代码格式化为Javascript代码段(已编辑).嗨,你的num
数组的条目是什么类型的?顺便说一句,我认为你可以减少导数函数,使它们只使用一个where
。我会将LeakyRelu的导数函数改为:num=np.where(numI试图在普通代码段中添加代码,但我的浏览器出现问题。对此表示抱歉,Thanx for tipp jottbe:)
## RelU
def Relu(num):
return np.where(num>0,num,0)
## Relu derivative
def Relu_deriv(num):
num=np.where(num>0,num,0)
num=np.where(num==0,num,1)
return num
## leaky RelU
def L_Relu(num):
return np.where(num>0,num,0.01*num)
## leaky RelU deriv
def L_Relu_D(num):
num=np.where(num<=0,num,1)
num=np.where(num>=0,num,0.01)
return num