Python中ReLU函数的导数
ReLU是Rectified Linear Activation Function的缩写,它是深度学习范围内最流行的激活函数的替代品。ReLU是线性函数的一部分,如果输入值是正的,它将输出相同的输入;如果不是,它将给出零的输出。
本文指出如何使用Python编程语言做ReLU函数的导数。
在Python中实现ReLU函数
作为一个数学函数,我们可以将ReLU函数定义如下:
f(x) = max(0,x)
这个函数关于x
,是线性的,对所有的负值输出为零。
下面的伪代码表示ReLU函数。
if input > 0:
return input
else:
return 0
按照上述伪代码,我们可以建立我们的ReLU函数的实现,如下所示:
import numpy as nm
def relu_func(x):
return(nm.maximum(0,x))
print(relu_func(2))
print(relu_func(0))
print(relu_func(0.1))
print(relu_func(-3))
考虑到这个例子,它定义了参数为relu_func
的函数x
。这个函数考虑到ReLU函数,返回输出。
我们将一个单一的整数作为参数一次性传递给relu_func
函数。
maximum()
函数返回最高值。如果整数大于0,它将打印与输入相同的整数;如果不是,它将打印0。
因此,我们在上面的代码中实现的ReLU函数将适用于任何单一的整数;也适用于numpy
阵列。
我们可以得到如下的输出结果:
Python中ReLU函数的导数
ReLU函数的导数,否则就会调用ReLu的梯度。该函数的导数就是斜率。
如果我们创建一个图形,例如,y= ReLu(x)
,并且x
大于零,那么梯度就是1
。
如果x
小于零,则梯度为0
。如果x = 0
,导数就不存在了。
ReLu函数的数学导数可以定义如下:
f'(x) = 1, x >= 0
= 0, x < 0
我们可以将ReLu函数的导数应用于图形。因此,让我们看一下下面的例子。
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
#define relu function
def relu_func(z):
return np.maximum(0,z)
z = np.arange(-3,5,1)
print (z)
Y = relu_func(z)
print(Y)
plt.plot(z,Y,'o-')
plt.xlabel('X')
plt.ylabel('F(x)')
plt.grid()
考虑到上面的代码,它被定义为relu_func
,传递参数z
。在这个函数下,我们返回relu
函数和定义的z
变量,以获得x轴的范围。
还定义了Y
变量来传递relu_func
的参数。relu_func(Z)
函数计算所有z
值的reLU。
因此,所有的负值将表示为零。X轴图是X
,Y轴图是F(x)
。
下面的图是我们从上述代码中得到的输出。
如前所述,导数意味着图形在某一点上的斜率。因此,x=1
的斜率是1。
所有其他大于0的点的斜率都是1。然而,x=-3
的斜率是多少?
我们可以看到该点没有斜率。
所有其他小于0的点都没有斜率,这意味着斜率为0。所以这被称为ReLu函数的导数,内置Python编程语言。
总结
本文指出了如何在Python中实现ReLu函数,主要讨论了如何实现ReLu导数函数。ReLU函数在深度学习中被频繁使用。
但是它有一些问题。例如,如果输入值小于0,输出将是0。
因此,神经网络无法继续其一些工作。作为一个解决方案,它主要使用Leaky ReLU函数。