jjzjj

CrossEntropyLoss

全部标签

小知识点系列(十一) 本文(2万字) | BCELoss | BCEWithLogitsLoss | CrossEntropyLoss | Smooth L1 Loss | NLLLOSS |

点击进入专栏:《人工智能专栏》Python与Python|机器学习|深度学习|目标检测|YOLOv5及其改进|YOLOv8及其改进|关键知识点|各种工具教程官网torch.nn-PyTorch中文文档(pytorch-cn.readthedocs.io)文章目录简介CrossEntropyLoss0.QuickStart1.参数2.计算过程3.损失函数输入及输出的Tensor形状3.1简单情况(一个样本)3.2多个样本(一个batch)3.3三维情况(多样本+多通道)BCELoss和BCEWithLogitsLoss以及CrossEntropyLoss

聊聊关于分类和分割的损失函数:nn.CrossEntropyLoss()

目录1.nn.CrossEntropyLoss()2.多分类中nn.CrossEntropyLoss()的应用3.分割中 nn.CrossEntropyLoss()的应用3.1测试文件3.2 输出可视化3.3 softmax 3.4log 3.5 CrossEntropyLoss1.nn.CrossEntropyLoss()分类中,经常用nn.CrossEntropyLoss()交叉熵损失函数y为真实值、y(hat)为预测值 这种采用了one-hot编码的形式,多分类中,只有一个label为1softmax可以将数据以概率的形式输出,所以输出是在0-1之间,那么log就会是负数,因此交叉熵损失

loss = nn.CrossEntropyLoss(reduction=‘none‘)

nn.CrossEntropyLoss()函数是PyTorch中用于计算交叉熵损失的函数。其中reduction参数用于控制输出损失的形式。当reduction='none'时,函数会输出一个形状为(batch_size,num_classes)的矩阵,表示每个样本的每个类别的损失。当reduction='sum'时,函数会对矩阵求和,输出一个标量,表示所有样本的损失之和。当reduction='elementwise_mean'时,函数会对矩阵求平均,输出一个标量,表示所有样本的平均损失。在您的例子中,在使用reduction='none'时无法训练,是因为需要一个标量来表示整个训练集的损失

实例解释NLLLoss损失函数与CrossEntropyLoss损失函数的关系

  在分类问题中常用到交叉熵损失函数CrossEntropyLoss,有时候还能看到NLLLoss损失,两个损失是有关联的。1、首先,随机生成一个3*3的tensor,假设该张量  test_n 是我们的神经网络的输出,一行相当于一个样本的预测结果,如下:2、使用Softmax处理生成的tensor,这里要对每行元素进行操作,dim=1是对每行的元素进行操作(也就是沿着列增加的方向),dim=0是对每列的元素进行操作(也就是沿着行增加的方向),3、接着对处理得到的tensor求对数,Softmax处理后的数值都在0~1之间,所以取ln对数之后值域(-∞,0)假设我们的目标是target=tor

实例解释NLLLoss损失函数与CrossEntropyLoss损失函数的关系

  在分类问题中常用到交叉熵损失函数CrossEntropyLoss,有时候还能看到NLLLoss损失,两个损失是有关联的。1、首先,随机生成一个3*3的tensor,假设该张量  test_n 是我们的神经网络的输出,一行相当于一个样本的预测结果,如下:2、使用Softmax处理生成的tensor,这里要对每行元素进行操作,dim=1是对每行的元素进行操作(也就是沿着列增加的方向),dim=0是对每列的元素进行操作(也就是沿着行增加的方向),3、接着对处理得到的tensor求对数,Softmax处理后的数值都在0~1之间,所以取ln对数之后值域(-∞,0)假设我们的目标是target=tor