0 写在前
分类是机器学习的很重要的一种方式.所以有效的分类方法也是十分重要的.softmax提供了一种十分有效的概率分类预测的方法
1 softmax函数
s
o
f
t
m
a
x
(
x
i
)
=
e
x
i
∑
m
=
j
z
e
x
j
softmax(x_{i})= \frac{e^{x_{i}}}{\sum_{m=j}^z e^{x_{j}} }
softmax(xi)=∑m=jzexjexi
这里存在两种情况,如果样本是矩阵时和样本就为一向量:代码如下
import numpy as np
def softmax(x):
orig_shape = x.shape
if len(x.shape) > 1:
# Matrix
### YOUR CODE HERE
x -= np.max(x,axis=1,keepdims=True)
a = np.exp(x)
b = np.sum(np.exp(x),axis=1)
for i in range(len(b)):
x[i]=a[i]/b[i]
else:
x -= np.max(x,axis=0,keepdims=True)
x = np.exp(x)/np.sum(np.exp(x),axis=0)
assert x.shape == orig_shape
return x
这里在X的定义是一定要设置为浮点型,不然计算结果会出错