反向传播中的 ReLU 导数
ReLU derivative in backpropagation
我要在使用 ReLU 的神经网络上进行反向传播。
在我之前的项目中,我是在使用 Sigmoid 激活函数的网络上完成的,但现在我有点困惑,因为 ReLU 没有导数。
这里 image 关于 weight5 如何影响总误差。
在此示例中,如果我使用 sigmoid 函数,out/net = a*(1 - a)。
我应该写什么来代替 "a*(1 - a)" 来使反向传播起作用?
since ReLU doesn't have a derivative.
不是,ReLU有导数。我假设您正在使用 ReLU 函数 f(x)=max(0,x)
。这意味着如果 x<=0
则 f(x)=0
,否则 f(x)=x
。在第一种情况下,当 x<0
时,f(x) 对 x 的导数给出结果 f'(x)=0
。在第二种情况下,很明显可以计算 f'(x)=1
.
Relu 导数对于 x >= 0 为 1,对于 x < 0 为 0
relu导数可以用np.heaviside阶跃函数实现,例如np.heaviside(x, 1)。第二个参数定义了 x = 0 时的 return 值,所以当 x = 0 时,1 表示 1。
从数学的角度来看,它应该是不连续的一半。
自 frouiers 系列以这种方式行事以来,它对一般事物的引用是常见的
我要在使用 ReLU 的神经网络上进行反向传播。 在我之前的项目中,我是在使用 Sigmoid 激活函数的网络上完成的,但现在我有点困惑,因为 ReLU 没有导数。
这里 image 关于 weight5 如何影响总误差。 在此示例中,如果我使用 sigmoid 函数,out/net = a*(1 - a)。
我应该写什么来代替 "a*(1 - a)" 来使反向传播起作用?
since ReLU doesn't have a derivative.
不是,ReLU有导数。我假设您正在使用 ReLU 函数 f(x)=max(0,x)
。这意味着如果 x<=0
则 f(x)=0
,否则 f(x)=x
。在第一种情况下,当 x<0
时,f(x) 对 x 的导数给出结果 f'(x)=0
。在第二种情况下,很明显可以计算 f'(x)=1
.
Relu 导数对于 x >= 0 为 1,对于 x < 0 为 0
relu导数可以用np.heaviside阶跃函数实现,例如np.heaviside(x, 1)。第二个参数定义了 x = 0 时的 return 值,所以当 x = 0 时,1 表示 1。
从数学的角度来看,它应该是不连续的一半。 自 frouiers 系列以这种方式行事以来,它对一般事物的引用是常见的