在机器学习尤其是深度学习中,softmax是个非常常用而且比较重要的函数,尤其在多分类的场景中使用广泛。他把一些输入映射为0-1之间的实数,并且归一化保证和为1,因此多分类的概率之和也刚好为1。
softmax的公式为:
S
o
f
t
m
a
x
(
z
j
)
=
e
z
j
∑
e
z
j
Softmax(z_j) = \frac{e^{z_j}}{\sum {e^{z_j}}}
Softmax(zj)=∑ezjezj
接下来就是简单的实现过程。
不考虑其余复杂情况,单纯就公式本身而言:
对于一个向量,通过softmax转换为取值在(0,1)内的向量,且和为1。
import numpy as np
def softmax(x):
exp_x = np.exp(x)
result = exp_x / np.sum(exp_x)
return result
验证结果:
dim = np.arange(24).reshape(4,6)
print(softmax(dim))
print('-'*20)
print(np.sum(softmax(dim)))