python手撕交叉熵
时间: 2023-12-20 16:32:23 浏览: 182
机器学习——交叉熵python实现
5星 · 资源好评率100%
以下是手撕交叉熵的Python代码示例:
```python
import numpy as np
def softmax(x):
exps = np.exp(x - np.max(x))
return exps / np.sum(exps)
def cross_entropy_error(p, y):
delta = 1e-7 # 添加一个微小值,防止负无穷(np.log(0))的情况出现
p = softmax(p)
return -np.sum(y * np.log(p + delta))
```
在这个示例中,我们定义了两个函数:`softmax`和`cross_entropy_error`。`softmax`函数用于计算输入向量的softmax概率分布,`cross_entropy_error`函数用于计算交叉熵损失。
`cross_entropy_error`函数的输入参数是预测结果`p`和真实值的one-hot编码`y`。首先,我们使用`softmax`函数将预测结果转换为概率分布。然后,我们使用`np.log`计算每个类别的预测概率的对数。最后,我们将真实值的one-hot编码与预测概率的对数相乘,并对所有类别求和。最终,我们返回的是负的交叉熵损失,因为我们希望最小化损失。
阅读全文