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函数的导数

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)

下面的图是我们从上述代码中得到的输出。

Python中ReLU函数的导数

如前所述,导数意味着图形在某一点上的斜率。因此,x=1 的斜率是1。

所有其他大于0的点的斜率都是1。然而,x=-3 的斜率是多少?

我们可以看到该点没有斜率。

所有其他小于0的点都没有斜率,这意味着斜率为0。所以这被称为ReLu函数的导数,内置Python编程语言。

总结

本文指出了如何在Python中实现ReLu函数,主要讨论了如何实现ReLu导数函数。ReLU函数在深度学习中被频繁使用。

但是它有一些问题。例如,如果输入值小于0,输出将是0。

因此,神经网络无法继续其一些工作。作为一个解决方案,它主要使用Leaky ReLU函数。