当前位置: 首页 > article >正文

交叉熵损失 在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 结合起来。


http://www.kler.cn/news/355204.html

相关文章:

  • MySQL-CRUD-基础-(详解) ┗( ▔, ▔ )┛
  • PostgreSQL学习笔记十三:常用函数
  • Flutter框架学习计划
  • 文献阅读:通过深度神经网络联合建模多个切片构建3D整体生物体空间图谱
  • Docker 教程三 (CentOS Docker 安装)
  • AI核身-金融场景凭证篡改检测Baseline实践
  • 机器学习“捷径”:自动特征工程全面解析(附代码示例)
  • XML的使用
  • 买卖股票的最佳时机(动态规划方法总结)
  • 麒麟系统mate_indicators进程占用内存资源高
  • 云岚到家 支付实现
  • 字节跳动基础架构消息队列团队论文入选云计算领域顶会 SoCC 2024
  • 数据库中的JSON数据类型
  • 【MySQL】入门篇—基本数据类型:简单的查询与过滤
  • Java多线程编程:深入理解与实践
  • SSL卸载(SSL流量管理)
  • Linux go语言配置
  • 嵌入式C语言面试相关知识——结构体和联合体
  • 模块编译成功,但是python运行找不到依赖库Nomodule named ‘ ‘
  • 定期备份MYSQL数据库(Linux)