与第一课线性回归(linear regression)不同,softmax回归针对的是多分类的情况,即labels不再仅有0,1两个分类。
softmax通过指数运算将最后的分类转为0~1间的概率,在终于类别概率中,数值大的为预测概率。
与线性回归损失不同,softmax函数计算损失采用的是交叉熵损失(Cross Entropy),原理和公式推导可参考:https://zhuanlan.zhihu.com/p/27223959
softmax函数简单实现代码如下:
from mxnet import autograd,nd
import gluonbook as gb
%matplotlib inline
import time
import matplotlib.pyplot as plt
import sys
#读取数据
batch_size = 256
train_iter,test_iter = gb.load_data_fashion_mnist(batch_size)
#参数初始化
num_inputs = 784
num_outputs = 10
w = nd.random.normal(scale = 1,shape = (num_inputs,num_outputs))
b = nd.random.normal(num_outputs)
w.attach_grad()
b.attach_grad()
#正向传播,实现softmax运算
def softmax(x):
return nd.exp(x) / nd.exp(x).sum(axis = 1,keepdims = True)