二分类交叉熵损失函数PYTORCH
时间: 2024-12-27 14:24:46 浏览: 5
### PyTorch 中实现二分类交叉熵损失函数
#### 使用 `nn.BCELoss`
`nn.BCELoss` 是用于计算二分类交叉熵损失的标准方法之一。此函数适用于输入张量和目标张量均为相同形状的情况,其中每个元素代表一个样本属于正类的概率预测值。
```python
import torch
import torch.nn as nn
# 创建模拟数据
inputs = torch.tensor([[0.6], [0.3]], dtype=torch.float32)
targets = torch.tensor([[1.0], [0.0]], dtype=torch.float32)
# 定义损失函数
criterion = nn.BCELoss()
# 计算损失
loss = criterion(inputs, targets)
print(f'Using BCELoss: {loss.item()}')
```
该代码片段展示了如何定义并应用 `BCELoss` 函数到给定的输入和标签上[^1]。
#### 使用 `nn.BCEWithLogitsLoss`
为了简化工作流程以及提高数值稳定性,推荐使用带有逻辑斯谛回归层(即sigmoid激活)内置的版本——`nn.BCEWithLogitsLoss`。这个组合可以更有效地处理未经过Sigmoid变换的原始分数作为模型输出。
```python
# 创建未经 Sigmoid 变换的数据
logits = torch.tensor([[-0.5], [-1.2]], dtype=torch.float32)
# 定义带 logits 的损失函数
criterion_with_logits = nn.BCEWithLogitsLoss()
# 计算损失 (内部自动进行了 sigmoid 转换)
loss_with_logits = criterion_with_logits(logits, targets)
print(f'Using BCEWithLogitsLoss: {loss_with_logits.item()}')
```
上述例子说明了当直接提供线性输出而不需要显式调用 Sigmoid 层时应采用的方式[^3]。
阅读全文