第9讲:多分类问题(上)
- 用softmax 解决多分类问题
- 用pytorch 实现多分类问题
1.softmax
softmax:让线形层的输出结果(进行softmax前的input)有负数,通过幂指变换,得到正数。所有类的概率求和为1。
2.softmax如何做到上面的操作:
- 对每一L层的输出进行幂指运算,使其>0
- 所有K个分类的输出幂指再求和,结果=1
- 计算各分类的分布
example:
输入向量的每个元素求指数,与它们求和的结果相除,可以得到各个类的分布函数
3.交叉熵损失Cross Entropy in PyTorch
说明:
- 标签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的区别和使用