pytorch CrossEntropyLoss 学习

编程入门 行业动态 更新时间:2024-10-09 08:34:36

<a href=https://www.elefans.com/category/jswz/34/1769961.html style=pytorch CrossEntropyLoss 学习"/>

pytorch CrossEntropyLoss 学习

class torch.nn.CrossEntropyLoss(weight=None,size_average=None,ignore_index=-100,reduce=None,reduction='elementwise_mean')

功能:
       将输入经过softmax激活函数之后,再计算其与target的交叉熵损失。即该方法将nn.LogSoftmax()nn.NLLLoss()进行了结合。严格意义上的交叉损失函数应该是nn.NLLLoss()

        交叉熵损失(cross-entropy Loss)又称为对数似然损失(Log-likelihood loss),对数损失;二分类时还可以称之为逻辑斯碲回归损失。交叉熵损失函数表达式为L=-sigama(y_ilog(x_i))。PyTorch先将input经过softmax激活函数,将向量"归一化"成概率形式,然后再与target计算严格意义上交叉熵损失。


      在多分类任务中,经常采用softmax激活函数+交叉熵损失函数,因为交叉熵描述了两个概率分布的差异,然而神经网络输出的是向量,并不是概率分布的形式。所以需要softmax激活函数将一个向量进行"归一化"成概率分布的形式。所以需要softmax激活函数将一个向量进行"归一化"成概率分布的形式,再采用交叉熵损失函数计算Loss。PyTorch的CrossEntropyLoss(),则是将nn.LogSoftmax()nn.NLLLoss()进行了结合,nn.LogSoftmax()相当于激活函数,nn.NLLLoss()是损失函数,将其结合,所以我认为该函数应该叫做softmax+交叉熵损失函数。

实例:

import torch
import torch.nn as nn
import numpy as np
entroy = nn.CrossEntropyLoss()
input = torch.Tensor([[-0.7715,-0.6205,-0.2562]])
target = torch.tensor([0])
output = entroy(input,target)
print(output) #采用CrossEntropyLoss计算的结果。
myselfout = -(input[:,0])+np.log(np.exp(input[:,0])+np.exp(input[:,1])+np.exp(input[:,2])) #自己带公式计算的结果
print(myselfout)
lsf = nn.LogSoftmax()
loss = nn.NLLLoss()
lsfout = lsf(input)
lsfnout = loss(lsfout,target)
print(lsfnout)

更多推荐

pytorch CrossEntropyLoss 学习

本文发布于:2024-03-10 00:20:15,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1726531.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:pytorch   CrossEntropyLoss

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!