CrossEntropyLoss交叉熵损失函数的使用

目录

CrossEntropyLoss交叉熵损失函数的使用:

一、官方说明:

 二、两种使用情况:

1)情况一:target是一个类索引(Example of target with class indices)

2)情况二:target是一个类概率(Example of target with class probabilities)


CrossEntropyLoss交叉熵损失函数的使用:

一、官方说明:

CrossEntropyLoss — PyTorch 2.3 documentation

torch.nn.CrossEntropyLoss(weight=None, size_average=None, ignore_index=-100, reduce=None, reduction='mean', label_smoothing=0.0)

 二、两种使用情况:

1)情况一:target是一个类索引(Example of target with class indices)

当target是一个类索引,使用CrossEntropyLoss函数,计算input(样本的预测概率分布)和target(样本的真实标签)的交叉熵损失:

import torch
import torch.nn as nn######### 交叉熵损失损失函数的两种情况(以下假设有3个样本,5个类别)# 情况一:Example of target with class indices(具有类索引的目标示例,target是一个类索引)
loss = nn.CrossEntropyLoss()input = torch.randn(3, 5, requires_grad=True)    # input为3个样本的预测概率分布
target = torch.empty(3, dtype=torch.long).random_(5) # target为3个样本的真实标签
output = loss(input, target)             # 计算损失print(input)
print(target)
print(output)#### 以下是输出结果:
# tensor([[ 1.9081,  0.0438, -0.8243, -0.3006,  0.2915],
#         [ 0.3592,  1.4114, -0.3863,  0.5843, -0.7542],
#         [ 1.0673, -0.9307, -0.8625, -2.3816, -0.5145]], requires_grad=True)
# tensor([3, 0, 4])
# tensor(2.1368, grad_fn=<NllLossBackward0>)

2)情况二:target是一个类概率(Example of target with class probabilities)

当target是一个类概率,使用CrossEntropyLoss函数,计算input(样本的预测概率分布)和target(样本的真实标签)的交叉熵损失:

# 情况二:Example of target with class probabilities(具有类概率的目标示例,target是一个类概率分布)
loss = nn.CrossEntropyLoss()input = torch.randn(3, 5, requires_grad=True) # input为3个样本的预测概率分布
target = torch.randn(3, 5).softmax(dim=1)     # target为3个样本的真实标签
output = loss(input, target)           # 计算损失print(input)
print(target)
print(output)#### 以下是输出结果:
# tensor([[ 0.5793, -0.3210,  0.1222, -0.7272, -0.8790],
#         [-0.2824,  0.2521,  0.9788, -0.4009, -0.1519],
#         [-0.5411, -0.1141,  0.6473, -0.1465, -1.0575]], requires_grad=True)
# tensor([[0.4346, 0.1689, 0.1089, 0.0145, 0.2731],
#         [0.0651, 0.4137, 0.0194, 0.3543, 0.1476],
#         [0.1100, 0.0912, 0.1600, 0.6082, 0.0306]])
# tensor(1.6848, grad_fn=<DivBackward1>)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/48954.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeeCode Practice Journal | Day23_Backtracking

39.组合总和 题目&#xff1a;39. 组合总和 - 力扣&#xff08;LeetCode&#xff09; 题解&#xff1a;代码随想录 (programmercarl.com) 不同要求下的组合&#xff0c;可以进行一下总结 solution public class Solution {public List<IList<int>> results new…

Postman API测试数据生成秘籍:技巧与实践

Postman API测试数据生成秘籍&#xff1a;技巧与实践 在API测试过程中&#xff0c;生成合适的测试数据是确保测试覆盖率和准确性的关键步骤。Postman作为流行的API开发和测试工具&#xff0c;提供了多种方法来生成和管理测试数据。本文将深入探讨Postman中API测试数据生成的技…

jmeter实战(1)- Mac环境安装

一、安装 JDK 这个就不介绍了&#xff0c;本地自行安装 JDK 并且配置好环境变量 二、安装 Jmeter 1. 下载地址 —> 下载链接点击这里 2. 选择合适的版本下载 3. 解压到本地目录 解压后&#xff0c;会得到下面的目录文件&#xff1a; 输入cd bin&#xff0c;进入到bin…

Java中的多级缓存设计与实现

Java中的多级缓存设计与实现 大家好&#xff0c;我是微赚淘客系统3.0的小编&#xff0c;是个冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 在现代应用程序中&#xff0c;多级缓存设计是一种常见的性能优化技术。多级缓存通过在不同层次上缓存数据来减少对底层存…

[STM32]HAL库实现自己的BootLoader-BootLoader与OTA-STM32CUBEMX

目录 一、前言 二、BootLoader 三、BootLoader的实现 四、APP程序 五、效果展示 六、拓展 一、前言 听到BootLoader大家一定很熟悉&#xff0c;在很多常见的系统中都会存在BootLoader。本文将介绍BootLoader的含义和简易实现&#xff0c;建议大家学习前掌握些原理基础。 …

目标检测算法:基本原理、发展历程、主要方法以及未来的发展趋势。

目标检测算法&#xff0c;作为计算机视觉领域中的一项关键技术&#xff0c;近年来得到了广泛的关注和研究。它旨在从图像或视频中准确地识别出目标的位置和类别&#xff0c;对于实现图像理解、视频分析、智能监控等应用具有重要意义。本文将详细介绍目标检测算法的基本原理、发…

实时更新UI界面

1.处理实时通信&#xff0c;几种方案 1&#xff1a;当一个用户发送一条需要实时更新的信息&#xff0c;我可以直接查找在线用户&#xff0c;通过在线用户来进行判断条件&#xff0c;发送更新请求 2&#xff1a;用户在一个需要实时更新的界面时&#xff0c;就不断的向服务端发…

【Android】Activity与Fragment的数据传递

上一篇文章学到了碎片的创建与生命周期&#xff0c;接下来学习碎片的常用操作&#xff0c;其中会用到上一篇文章的三个碎片&#xff0c;就做一个简单的说明吧&#xff1a;LeftFragment&#xff08;包含一个按钮&#xff09;、RightFragment4&#xff08;以粉色为背景的文本&…

408专业课130|零基础五个月速成攻略

计算机考研&#xff0c;有两个选择&#xff0c;一个是自命题&#xff0c;一个是408。如果你只是考一个普通院校&#xff0c;可以选择考自命题院校&#xff0c;容易上岸&#xff0c;但是如果考985/211/这类院校&#xff0c;最好还是选择408&#xff0c;因为408的考风险能力很强&…

Apollo部署与简易架构梳理

文章目录 apollo 安装apollo的基本架构组件机制component编译与加载 节点通讯数据的传输消息读写的实现消息的写端消息读端 常用术语ComponentChannelTaskNodeReader/WriterService/ClientParameter服务发现CRoutineSchedulerMessageDag文件Launch文件Record文件Mainboard Moni…

在图神经网络(GNN)上进行关系推理的新架构

开发能够学习推理的模型是一个众所周知的具有挑战性的问题&#xff0c;在这个领域中&#xff0c;使用图神经网络&#xff08;GNNs&#xff09;似乎是一个自然的选择。然而&#xff0c;以往关于使用GNNs进行推理的工作表明&#xff0c;当这些模型面对需要比训练时更长推理链的测…

JS代码混淆

JavaScript Obfuscator是JavaScript的功能强大的免费混淆器&#xff0c;其中包含多种功能&#xff0c;可为您的源代码提供保护&#xff0c;它支持很多流行的前端打包工具&#xff0c;如Webpack、Gulp、Grunt等都有相应的插件。 主要特征&#xff1a; ∙变量重命名 ∙字符串提…

(leetcode学习)236. 二叉树的最近公共祖先

给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为&#xff1a;“对于有根树 T 的两个节点 p、q&#xff0c;最近公共祖先表示为一个节点 x&#xff0c;满足 x 是 p、q 的祖先且 x 的深度尽可能大&#xff08;一个节点也可以是它自己的祖…

有一个动态数组a,约束如下:a的元素在5-10之间;a.sum小于100。 问:为什么随机出来的a绝对值都很大?如何解决这一问题?

题目 有一个动态数组a&#xff0c;约束如下&#xff1a;a的元素在5-10之间&#xff1b;a.sum小于100。 问&#xff1a;为什么随机出来的a绝对值都很大&#xff1f;如何解决这一问题&#xff1f; … int a[]; constraint c1{ a.size() inside [5:10]; a.sum() inside [0:100…

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第三篇 嵌入式Linux驱动开发篇-第五十一章 添加设备树节点

i.MX8MM处理器采用了先进的14LPCFinFET工艺&#xff0c;提供更快的速度和更高的电源效率;四核Cortex-A53&#xff0c;单核Cortex-M4&#xff0c;多达五个内核 &#xff0c;主频高达1.8GHz&#xff0c;2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…

linux禁用root

linux禁用root 1. 禁止普通用户切换到root1.1 sudo -i和sudo -s的区别1.2 sudo -i和直接登录root账号的区别1.3 禁止sudo -i切换root1.4 禁止su - root切换root 2. 禁止root远程登录2.1 ssh禁止root登录2.2 禁止远程桌面登录 本文主要介绍&#xff1a; 如何禁止普通用户切换到r…

Java---后端事务管理

代码世界聚眸光&#xff0c;昼夜敲盘思绪长。 算法心间精构建&#xff0c;编程路上细思量。 屏前架构乾坤定&#xff0c;键上飞驰智慧扬。 默默耕耘成果现&#xff0c;创新科技铸辉煌。 目录 一&#xff0c;概念 二&#xff0c;Spring事务管理 三&#xff0c;rollbackFor事务回…

智能合约中最常见的11种函数

下面列出了一些常见的智能合约函数及其用途&#xff0c;并提供了一些基本的示例。 1. 构造函数 (constructor) 构造函数用于初始化智能合约的状态变量。它只在合约部署时被调用一次。 示例: contract MyContract {address public owner;constructor() {owner msg.sender;}…

运维锅总浅析Kubernetes之Ceph

Ceph 的核心组件有哪些&#xff1f;Ceph读写数据流程及故障自愈是怎样的&#xff1f;如何对Ceph部署架构进行调优&#xff1f;如何用Ceph集成到kubernetes&#xff1f;希望本文能帮您解答这些疑惑&#xff01; 一、Ceph简介 Ceph 是一个开源的分布式存储系统&#xff0c;旨在…

sqlalchemy打印query的SQL和参数

sqlalchemy打印query的SQL和参数 在使用 SQLAlchemy 时,可以通过几种方式来打印生成的 SQL 查询和参数。这对于调试和理解程序生成的实际数据库查询非常有用。以下是一些方法: 1. 使用 str(query) 可以直接使用 str(query) 方法来获取 SQLAlchemy 查询对象生成的 SQL 语句…