- PyTorch 2.0深度学习从零开始学
- 王晓华
- 552字
- 2024-12-27 21:21:29
2.1.3 Python代码小练习:计算Softmax函数
对于Python科学计算来说,最简单的想法就是将数学公式直接表达成程序语言,可以说,Python满足了这个想法。本小节将使用Python实现一个深度学习中最为常见的函数——Softmax函数。至于这个函数的作用,现在不加以说明,笔者只是带领读者尝试实现其程序的编写。
Softmax的计算公式如下:
其中,Vi是长度为j的数列V中的一个数,代入Softmax的结果其实就是先对每一个Vi取e为底的指数计算变成非负,然后除以所有项之和进行归一化,之后每个Vi就可以解释成:在观察到的数据集类别中,特定的Vi属于某个类别的概率,或者称作似然(Likelihood)。
提示:Softmax用以解决概率计算中概率结果大而占绝对优势的问题。例如函数计算结果中的两个值a和b,且a>b,如果简单地以值的大小为单位来衡量,那么在后续的使用过程中,a永远被选用,而b由于数值较小而不会被选择,但是有时也需要使用数值小的b,Softmax就可以解决这个问题。
Softmax按照概率选择a和b,由于a的概率值大于b,在计算时a经常会被取得,而b由于概率较小,被取得的可能性也较小,但是也有概率被取得。
Softmax的代码如下:
import numpy def softmax(inMatrix): m,n = numpy.shape(inMatrix) outMatrix = numpy.mat(numpy.zeros((m,n))) soft_sum = 0 for idx in range(0,n): outMatrix[0,idx] = math.exp(inMatrix[0,idx]) soft_sum += outMatrix[0,idx] for idx in range(0,n): outMatrix[0,idx] = outMatrix[0,idx] / soft_sum return outMatrix a = numpy.array([[1, 2, 1, 2, 1, 1, 3]]) print(softmax(a))
可以看到,当传入一个数列后,分别计算每个数值所对应的指数函数值,之后将其相加后计算每个数值在数值和中的概率。结果请读者自行打印验证。