负对数似然损失函数python代码
时间: 2024-08-01 22:00:26 浏览: 126
基于Python实现损失函数的参数估计【100011189】
负对数似然损失(Negative Log-Likelihood Loss,NLL Loss)是一种常用的评估分类模型性能的指标,特别是在机器学习中的概率估计算法中。在Python中,特别是在使用深度学习库如PyTorch时,计算NLL Loss的代码通常会涉及到模型的预测和真实标签的概率分布。
以下是一个简单的例子,展示如何在PyTorch中计算NLL Loss:
```python
import torch
from torch import nn
# 假设我们有一个二分类模型 model,预测输出是一个概率分布(logits)
model = nn.Linear(10, 2) # 假设输入是10维的,输出是2维,代表两个类别的概率
softmax = nn.Softmax(dim=1) # 使用softmax函数转换为概率分布
# 假设我们有一些输入数据 x 和对应的标签 y
x = torch.randn(100, 10)
y = torch.randint(0, 2, size=(100,)) # 0或1的标签
# 预测的概率分布
logits = model(x)
probs = softmax(logits)
# 计算负对数似然损失
loss_fn = nn.NLLLoss() # 创建NLLLoss对象
nll_loss = loss_fn(probs, y)
print("NLL Loss:", nll_loss.item())
```
在这个例子中,`nn.NLLLoss()`创建了一个损失函数对象,然后`loss_fn(probs, y)`计算了给定的概率分布`probs`和实际标签`y`之间的NLL Loss。
阅读全文