同学们大家好!!在本教程中,我们将了解 Softmax 函数以及如何使用NumPy在 Python 中计算 Softmax 函数。我们还将了解具有 Softmax 内置方法的框架。那么让我们开始吧。
Softmax 函数是什么?
Softmax 是一个数学函数,它将数字向量作为输入,并将其标准化为概率分布,其中每个值的概率与向量中每个值的相对比例成正比。
在对向量应用 softmax 函数之前,向量的元素可以在 的范围内(-∞, ∞)
。
有些元素可能是负面的,而有些元素可能是正面的。
应用softmax函数后,每个值将在 的范围内[0, 1]
,并且这些值的总和将为1,以便它们可以被解释为概率。
softmax计算公式为
我们首先找到向量中每个元素的指数,并将它们除以计算出的指数之和。
Softmax 函数最常用作多类分类问题的激活函数,在该问题中,您有一系列值,并且需要找到它们出现的概率。softmax 函数用于预测多项概率分布的神经网络模型的输出层。
在Python中实现Softmax函数
现在我们知道了在数字向量上计算 softmax 的公式,让我们来实现它。我们将使用 NumPyexp()
方法来计算向量的指数,并使用 NumPysum()
方法来计算分母和。
import numpy as np def softmax(vec): exponential = np.exp(vec) probabilities = exponential / np. sum (exponential) return probabilities vector = np.array([ 1.0 , 3.0 , 2.0 ]) probabilities = softmax(vector) print ( "Probability Distribution is:" ) print (probabilities) |
Probability Distribution is: [0.09003057 0.66524096 0.24472847] |
使用框架计算softmax
许多框架提供了计算向量上的 softmax 的方法,以用于各种数学模型。
1.张量流
您可以使用它tensorflow.nn.softmax
来计算向量上的 softmax,如图所示。
import tensorflow as tf import numpy as np vector = np.array([ 5.5 , - 13.2 , 0.5 ]) probabilities = tf.nn.softmax(vector).numpy() print ( "Probability Distribution is:" ) print (probabilities) |
Probability Distribution is: [9.93307142e-01 7.51236614e-09 6.69285087e-03] |
2.Scipy
Scipy库可用于计算 softmax,scipy.special.softmax
如下所示。
import scipy import numpy as np vector = np.array([ 1.5 , - 3.5 , 2.0 ]) probabilities = scipy.special.softmax(vector) print ( "Probability Distribution is:" ) print (probabilities) |
Probability Distribution is: [0.3765827 0.00253739 0.62087991] |
3.PyTorch
您可以使用Pytorch torch.nn.Softmax(dim)
计算 softmax,指定要计算的维度,如图所示。
import torch vector = torch.tensor([ 1.5 , - 3.5 , 2.0 ]) probabilities = torch.nn.Softmax(dim = - 1 )(vector) print ( "Probability Distribution is:" ) print (probabilities) |
Probability Distribution is: tensor([0.3766, 0.0025, 0.6209]) |
结论
恭喜!!,现在您已经了解了 softmax 函数以及如何使用各种方式实现它,您可以将它用于机器学习中的多类分类问题。
谢谢阅读!!