专栏链接:
深度学习知识点总结_Mr.小梅的博客-CSDN博客本专栏主要总结深度学习中的知识点,从各大数据集比赛开始,介绍历年冠军算法;同时总结深度学习中重要的知识点,包括损失函数、优化器、各种经典算法、各种算法的优化策略Bag of Freebies (BoF)等。
本章介绍多种损失函数。
目录
2.3 损失函数
深度学习中主要包含三类任务,分类、回归和分割,不同的任务需使用不同的损失函数。例如,分类任务中不能使用平方损失、L1Loss等。
2.3.1 L1Loss
可用于坐标回归,目前比较少用。
import torch.nn as nn
import torch
l1loss = nn.L1Loss()
pred = torch.ones((4,5))
gt = torch.zeros((4,5))
loss = l1loss(pred,gt)
print(loss) # tensor(1.)
2.3.2 MSELoss
可用于坐标回归。
# MSELOSS
loss = nn.MSELoss()
pred = torch.ones((4,5)) * 2
gt = torch.zeros((4,5))
out = loss(pred,gt)
print(out) # tensor(4.)
2.3.3 CrossEntropyLoss
用于单标签多分类任务。
# CrossEntropyLoss
loss = nn.CrossEntropyLoss()
pred = torch.Tensor([[0.8, 0.1, 0.4],
[0.1, 0.9, 0.2],
[0.5, 0.4, 0.6]])
gt = torch.LongTensor([0,
1,
2])
out = loss(pred, gt)
print(out) # tensor(0.8137)
'''
s1 = exp(0.8) + exp(0.1) + exp(0.4) = 4.822536544209386
s2 = exp(0.1) + exp(0.9) + exp(0.2) = 4.786176787392767
s3 = exp(0.5) + exp(0.7) + exp(0.6) = 4.962664768731908
l1 = -ln(exp(0.8) / s1) = 0.7733000436247918
l2 = -ln(exp(0.9) / s2) = 0.6657319272479286
l3 = -ln(exp(0.6) / s3) = 1.0019428482292443
loss = (l1 + l2 + l3) / 3 = 0.8136582730339882
'''
2.3.4 NLLLoss
负对数似然损失,用于单标签多分类任务。