第9讲:多分类问题(上)


  • 用softmax 解决多分类问题
  • 用pytorch 实现多分类问题
1.softmax

python knn多分类 pytorch多分类问题_多分类

softmax:让线形层的输出结果(进行softmax前的input)有负数,通过幂指变换,得到正数。所有类的概率求和为1。

2.softmax如何做到上面的操作:

python knn多分类 pytorch多分类问题_多分类_02

  1. 对每一L层的输出进行幂指运算,使其>0
  2. 所有K个分类的输出幂指再求和,结果=1
  3. 计算各分类的分布

example:

输入向量的每个元素求指数,与它们求和的结果相除,可以得到各个类的分布函数

python knn多分类 pytorch多分类问题_html_03

3.交叉熵损失Cross Entropy in PyTorch

python knn多分类 pytorch多分类问题_python knn多分类_04

说明:

  • 标签y的类型是LongTensor。此处torch.LongTensor([0])说明下标0是1.
    比如说0-9分类问题,如果y = torch.LongTensor([2]),对应的one-hot是[0,1,0,0,0,0,0,0,0,0].
  • CrossEntropyLoss <==> LogSoftmax + NLLLoss。
    LogSoftmax = softmax + Log
    nn.CrossEntropy,nn.NLLLoss,nn.BCELoss的区别和使用