交叉熵损失 在PyTorch 中的计算过程

 

其实就是根据 真实值的结果,当成索引去取的值
 
import torch
import torch.nn as nn

aaaa = torch.tensor([[2.0,1.0,3.0],
             [2.0,4.0,2.0]])

l1 = nn.LogSoftmax(dim=-1)
result = l1(aaaa)
print(result)

import torch
import torch.nn as nn

# 定义交叉熵损失函数
criterion = nn.CrossEntropyLoss()

# 模拟的模型输出(没有经过 softmax)
aaaa = torch.tensor([[2.0, 1.0, 3.0],
                     [2.0, 4.0, 2.0]])

# 模拟的目标类别
target = torch.tensor([2, 1])

# 计算交叉熵损失
loss = criterion(aaaa, target)
print("交叉熵损失:", loss.item())

 

在这个例子中,CrossEntropyLoss 会先对模型输出进行 softmax,然后计算目标类别的负对数似然损失(NLLLoss)。

其中 aaaa 是模型的原始输出,没有经过 softmax,target 是目标类别。

计算过程详细解释:

 

1. Softmax 操作:

• 第一行:[2.0, 1.0, 3.0]

• 计算 softmax 值:

经过计算得到:


• 第二行:[2.0, 4.0, 2.0]

• 计算 softmax 值:

经过计算得到:

2. 取对数:

• 第一行:[0.2595, 0.0952, 0.6452] 的对数:

• 第二行:[0.1065, 0.7869, 0.1065] 的对数:

3. NLLLoss 计算:

现在我们使用目标类别计算负对数似然损失:

4. 计算平均损失:

将两个样本的损失值相加后取平均:

因此,最终的交叉熵损失值为 0.33935。

 

总结:

Softmax 将模型输出转换为概率分布。

LogSoftmax 将 softmax 的概率取对数。

NLLLoss 根据目标类别提取 log-prob 对应的值,并计算损失。

CrossEntropyLoss 将 LogSoftmax 和 NLLLoss 结合起来。

 

交叉熵损失函数是pytorch中的一个常用函数,用于衡量分类任务中模型预测结果与真实标签之间的差异。在pytorch中,交叉熵损失函数的定义为nn.CrossEntropyLoss()。 该函数结合了nn.LogSoftmax()和nn.NLLLoss()两个函数的功能。其中,nn.LogSoftmax()用于对模型的输出进行log softmax操作,将其转化为概率分布;nn.NLLLoss()则用于计算负对数似然损失。因此,nn.CrossEntropyLoss()可以直接接收模型的输出和真实标签作为输入,并自动进行相应的处理,避免了手动进行softmax和计算负对数似然损失的麻烦。 在使用nn.CrossEntropyLoss()时,可以通过参数进行进一步的定制,比如设置权重、忽略特定的类别等。具体参数包括weight、size_average、ignore_index、reduce和reduction等。可以根据实际需要进行调整。 总结而言,交叉熵损失函数在pytorch中是一个方便且常用的函数,用于衡量模型的预测结果与真实标签之间的差异,并可通过参数进行进一步的定制。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [【Pytorch交叉熵损失函数 CrossEntropyLoss() 详解](https://blog.csdn.net/weixin_44211968/article/details/123906631)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [【pytorch交叉熵损失函数 nn.CrossEntropyLoss()](https://blog.csdn.net/weixin_37804469/article/details/125271074)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值