python实现交叉熵损失函数
时间: 2023-07-11 11:43:44 浏览: 142
交叉熵损失函数python实现源码
交叉熵损失函数的数学表达式为:
$$
\mathcal{L}_{\text{CE}} = -\frac{1}{n} \sum_{i=1}^{n} \left(y_i \log \hat{y}_i + (1-y_i) \log(1-\hat{y}_i)\right)
$$
其中,$n$ 是样本数量,$y_i$ 是真实标签(取值为0或1),$\hat{y}_i$ 是模型的预测值(取值为0到1之间)。
在 Python 中,我们可以使用 NumPy 库来实现交叉熵损失函数。以下是一个使用 NumPy 实现二元交叉熵损失函数的例子:
```python
import numpy as np
def binary_crossentropy(y_true, y_pred):
epsilon = 1e-15
y_pred = np.clip(y_pred, epsilon, 1 - epsilon)
return np.mean(-y_true * np.log(y_pred) - (1 - y_true) * np.log(1 - y_pred))
# 示例使用
y_true = np.array([0, 1, 1, 0])
y_pred = np.array([0.1, 0.9, 0.8, 0.2])
loss = binary_crossentropy(y_true, y_pred)
print(loss)
```
在这个例子中,我们定义了一个名为 `binary_crossentropy` 的函数,该函数接受两个 NumPy 数组 `y_true` 和 `y_pred` 作为输入,并返回它们之间的二元交叉熵损失。然后,我们使用 `np.array` 函数创建了一些样本数据,其中 `y_true` 数组是真实标签,`y_pred` 数组是模型的预测值。最后,我们调用 `binary_crossentropy` 函数计算了预测值和真实标签之间的二元交叉熵损失,并将结果保存在 `loss` 变量中。在这个例子中,我们得到的二元交叉熵损失为 `0.3365`。
当然,如果您使用 PyTorch 等深度学习框架,也可以使用内置的交叉熵损失函数来计算交叉熵损失。
阅读全文