Softmax与分类模型
Softmax原理
softmax通过下式将输出值变换成值为正且和为1的概率分布:
因此softmax运算不改变预测类别输出。
pytorch定义softmax函数如下:
def softmax(X):
X_exp = X.exp()
partition = X_exp.sum(dim=1, keepdim=True)
return X_exp / partition
定义softmax回归模型:
def net(X):
return softmax(torch.mm(X.view((-1, num_inputs)), W) + b)
交叉熵损失函数
对于分类问题常用交叉熵损失函数:
def cross_entropy(y_hat, y):
return - torch.log(y_hat.gather(1, y.view(-1, 1)))
模型训练和预测
在训练好softmax回归模型后,给定任一样本特征,就可以预测每个输出类别的概率。通常,我们把预测概率最大的类别作为输出类别。使用准确率(accuracy)来评价模型的表现。它等于正确预测数量与总预测数量之比。