Pytorch 中的激活函数
Pytorch 是一个开源机器学习框架,广泛用于创建机器学习模型,并提供各种函数来创建神经网络。激活函数是神经网络的关键组成部分。激活函数根据节点的输入或输入集确定神经网络中节点的输出。激活函数在神经网络节点的输出中引入了非线性,这对于解决复杂的机器学习问题是必要的。
什么是激活函数?
人工智能中的神经网络由输入层、隐藏层和输出层组成。输入层以不同的形式接收用户输入,隐藏层执行一些隐藏的计算,输出层给出结果,作为下一个连接节点的输入。因此,激活函数应用于用户输入以执行计算,并通过输出层给出输出。
Pytorch 提供的激活函数类型
Pytorch 提供了不同的激活函数,可以在不同的机器学习问题中使用。
ReLU 激活函数
Leaky ReLU 激活函数
Sigmoid 激活函数
Tanh 激活函数
Softmax 激活函数
ReLU 激活函数
修正线性单元激活函数 (ReLU) 是神经网络中广泛使用的激活函数。ReLU 函数定义为f(x) = max(0,x)。它是一个非线性函数,对于负输入始终输出零,并且不改变正输入的输出。因此,当输入为负时,不会发生学习。ReLU 函数可以从 torch.nn 包中导入。ReLU 函数的图形如下所示:

示例
在下面的示例中,我们创建了一个数组并将其传递给 Relu 激活函数。Relu 激活函数根据 Relu 激活函数转换数组的每个输入元素。
#pip install numpy import numpy as np def relu(x): return np.maximum(0, x) x = np.array([-1, 2, -3, 4, 0]) y = relu(x) print(y)
输出
[0 2 0 4 0]
Leaky ReLU 激活函数
Leaky ReLU 激活函数类似于 ReLU 激活函数,但 Leaky ReLU 函数对于负输入不输出零,因此在负输入的情况下也会发生学习。Leaky ReLU 函数定义为LeakyReLU(x)=max(0,x)+negative_slope∗min(0,x)。Leaky ReLU 函数的图形如下所示。

Leaky ReLU 也是非线性的,并解决了当函数输出零或在负输入值的情况下神经元的学习/训练时发生的神经元死亡问题。
示例
在下面的示例中,我们使用 numpy 创建了一个数组,并将数组传递给 leaky_relu 函数,该函数根据 leaky_relu 函数转换数组的每个元素。
import numpy as np def leaky_relu(x, alpha=0.1): return np.maximum(alpha * x, x) x = np.array([-1, 2, -3, 4, 0]) y = leaky_relu(x) print(y)
输出
[-0.1 2. -0.3 4. 0. ]
Sigmoid 激活函数
Sigmoid 函数是神经网络中最常用的激活函数之一。它定义为 f(x) = 1/(1+exp(-x))。Sigmoid 函数将任何输入映射到 0 到 1 之间的值。它适用于二元分类问题,其中输出为 0 或 1。Sigmoid 函数也用作深度神经网络中输出层的激活函数。在二元分类问题中,Sigmoid 函数的输出通常被视为概率。Sigmoid 激活函数的图形表示如下所示。

Sigmoid 函数可能会出现梯度消失问题。
示例
在下面的示例中,我们使用 numpy 创建了一个数组,并将数组传递给 sigmoid 函数,该函数根据 sigmoid 函数转换数组的每个元素。
import numpy as np def sigmoid(x): return 1 / (1 + np.exp(-x)) x = np.array([-1, 2, -3, 4, 0]) y = sigmoid(x) print(y)
输出
[0.26894142 0.88079708 0.04742587 0.98201379 0.5 ]
Tanh 激活函数
双曲正切函数是一个非线性激活函数,它对任何输入值都输出 -1 到 1 之间的值。tanh 激活函数定义为f(x) = (exp(x)-exp(-x))/(exp(x)+exp(-x))。Tanh 函数的 S 形图形如下所示。

使用 Tanh 函数时可能出现梯度消失问题。
示例
在下面的示例中,我们使用 numpy 创建了一个数组,并将数组传递给 tanh 函数,该函数根据 tanh 函数转换数组的每个元素。
import numpy as np def tanh(x): return np.tanh(x) x = np.array([-1, 2, -3, 4, 0]) y = tanh(x) print(y)
输出
[-0.76159416 0.96402758 -0.99505475 0.9993293 0. ]
Softmax 激活函数
Softmax 函数用于多类分类问题。它定义为f(x) = exp(x_i)/sum(exp(x_j))(对于所有 i)。Softmax 函数将任何输入映射到类上的概率分布。它适用于多类分类问题,其中输出可以属于多个类中的一个。Softmax 函数也用作深度神经网络中输出层的激活函数。Softmax 函数通常与其他激活函数结合使用,并放置在最后一层。
示例
在下面的示例中,我们使用 numpy 创建了一个数组,并将数组传递给 softmax 函数,该函数根据 softmax 函数转换数组的每个元素。
import numpy as np def softmax(x): exp_x = np.exp(x - np.max(x)) # to prevent overflow return exp_x / np.sum(exp_x) x = np.array([1, 2, 3, 4, 5]) y = softmax(x) print(y)
输出
[0.01165623 0.03168492 0.08612854 0.23412166 0.63640865]
结论
激活函数在神经网络中起着至关重要的作用,PyTorch 提供了各种可供选择的激活函数。激活函数的选择取决于问题的类型和神经网络的结构。通过使用合适的激活函数,我们可以提高神经网络的性能并获得更好的结果。
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP