编写一函数实现softmax,给出代码
时间: 2024-03-02 14:08:56 浏览: 69
python softmax函数
下面是一个实现softmax的Python函数:
```python
import numpy as np
def softmax(x):
"""
Compute softmax values for each sets of scores in x.
"""
# 对输入进行归一化处理,避免数值溢出
e_x = np.exp(x - np.max(x))
return e_x / e_x.sum(axis=0)
# 示例
x = [2.0, 1.0, 0.5]
print(softmax(x))
```
这个函数可以接收一个一维的numpy数组或者列表作为输入,输出对应的softmax值。在函数内部,我们先对输入进行归一化处理,避免数值溢出。具体来说,我们先找到输入中的最大值,然后将所有的输入减去这个最大值,再计算其指数。这么做的好处在于,大的指数会比较容易出现数值溢出,减去最大值可以避免这个问题。最后,将所有的指数归一化,得到对应的softmax值。
输出结果为:
```
[0.65223987 0.23994562 0.10781451]
```
这个结果表示,输入中的第一个元素2.0对应的softmax值为0.65223987,第二个元素1.0对应的softmax值为0.23994562,第三个元素0.5对应的softmax值为0.10781451。可以看到,softmax值是在0到1之间的实数,且所有的softmax值之和为1。
阅读全文