如何理解BCEWithLogitsLoss()

devtools/2024/12/22 2:06:52/

1.示例1 

logit=[0.5 -1.0 2.0]
targets=[1 0 1]# δ=sigmoid(x)
p=δ(logits)=[δ(0.5) δ(-1.0) δ(2.0)]=[0.6225 0.2689 0.8808]loss1 = -[1 · log(0.6225) + 0 · log(1 - 0.6225)] ≈ 0.4744
loss2 = -[0 · log(0.2689) + 1 · log(1 - 0.2689)] ≈ 0.3133
loss3 = -[1 · log(0.8808) + 0 · log(1 - 0.8808)] ≈ 0.1269total_loss = loss1 + loss2 + loss3 ≈ 0.4744 + 0.3133 + 0.1269 = 0.9143

2.分布计算演示 

import torchlogits = torch.tensor([[0.5], [-1.0], [2.0]], dtype=torch.float32)
targets = torch.tensor([[1.0], [0.0], [1.0]], dtype=torch.float32)probs = torch.sigmoid(logits)# Use the formula: - [ y * log(p) + (1 - y) * log(1 - p) ]
loss_per_sample = - (targets * torch.log(probs) + (1 - targets) * torch.log(1 - probs))total_loss = torch.sum(loss_per_sample)print(total_loss.item())
# 0.9142667055130005

3.BCEWithLogitsLoss实现 

import torch
import torch.nn as nn# Define logits and targets
logits = torch.tensor([[0.5], [-1.0], [2.0]], dtype=torch.float32)
targets = torch.tensor([[1.0], [0.0], [1.0]], dtype=torch.float32)# Define the loss function
loss_fn = nn.BCEWithLogitsLoss(reduction='sum')# Compute the loss
loss = loss_fn(logits, targets)
print(loss.item())
# 0.9142667055130005


http://www.ppmy.cn/devtools/114696.html

相关文章

23.面试题02.07链表相交

public class Solution {public ListNode getIntersectionNode(ListNode headA, ListNode headB) {ListNode apheadA;ListNode bpheadB;int lenA0,lenB0;//求两个链表长度while(ap!null){apap.next;lenA;}while(bp!null){bpbp.next;lenB;}apheadA;bpheadB;int len0;//用来计算让…

【Day14-单例设计模式动态代理】

单例设计模式 什么是设计模式(Design pattern) ? 一个问题通常有n种解法,其中肯定有一种解法是最优的,这个最优的解法被人总结出来了,称之为设计模式。设计模式有20多种,对应20多种软件开发中会遇到的问题…

如何删除EXCELL文件中的空行?

1,选择某一列 2,点击《开始》《查找和选择》>《定位条件》,调出《定位条件》的选择框; 3,在定位条件选项框,选择《空值》; 4,找到变灰被选中的某一行,右击《删除》 5&…

C++: 类和对象(上)

📔个人主页📚:秋邱-CSDN博客☀️专属专栏✨:C🏅往期回顾🏆:从C语言过渡到C🌟其他专栏🌟:C语言_秋邱 ​ 面向过程和面向对象 C 语言被认为是面向过程的编程…

vagrant+virtualbox+ubuntu22.04无法上网问题

一、过程 vagrantfile配置私有网络 config.vm.network "private_network", ip: "192.168.56.10"启动虚拟机,可以ping通百度的实际IP,ping不通域名修改/etc/netplan/50-vagrant.yaml,配置DNS network:renderer: Networ…

优化 Elasticsearch 集群性能:解决节点压力不均衡问题及分片策略调整

在管理 Elasticsearch 集群时,我们经常会遇到节点间压力不均衡的问题,这通常是由不合理的分片策略导致的。本文将分享一个真实案例的解决过程,以及如何优化分片策略来提升集群整体性能。 1. 问题描述 在我们的 Elasticsearch 集群中,我们发现数据节点之间的 JVM 内存压力…

YOLOv9改进系列,YOLOv9主干网络替换为RepViT (CVPR 2024,清华提出,独家首发),助力涨点

摘要 轻量级视觉变换器(ViTs)在资源受限的移动设备上表现出优越的性能和较低的延迟,相比之下轻量级卷积神经网络(CNNs)稍显逊色。研究人员发现了许多轻量级 ViTs 和轻量级 CNNs 之间的结构联系。然而,它们在块结构、宏观和微观设计上的显著架构差异尚未得到充分研究。在…

2-95 基于matlab的模板定位

基于matlab的模板定位。利用①相关匹配(Correlation Matching)、②基于Hausdorff距离匹配方法 及③考虑对场景图象距离变换(Distance Transform)的Hausdorff距离匹配方法,实现模板目标在场景图象中的定位。程序已调通,…