python - 一个 numpy 数组的 Softmax 函数

标签 python arrays numpy neural-network softmax

我正在尝试将 softmax 函数应用于 numpy 数组。但我没有得到想要的结果。这是我试过的代码:

 import numpy as np
 x = np.array([[1001,1002],[3,4]])
 softmax = np.exp(x - np.max(x))/(np.sum(np.exp(x - np.max(x)))
 print softmax

我认为 x - np.max(x) 代码没有减去每一行的最大值。需要从 x 中减去最大值以防止出现非常大的数字。

这应该是输出

 np.array([
    [0.26894142, 0.73105858],
    [0.26894142, 0.73105858]])

但我得到:

np.array([
    [0.26894142, 0.73105858],
    [0, 0]])

最佳答案

maxsum 等“减少”操作所消耗的坐标轴的一种简便方法是使用 keepdims 关键字:

mx = np.max(x, axis=-1, keepdims=True)
mx
# array([[1002],
#        [   4]])
x - mx
# array([[-1,  0],
#        [-1,  0]])
numerator = np.exp(x - mx)
denominator = np.sum(numerator, axis=-1, keepdims=True)
denominator
# array([[ 1.36787944],
#        [ 1.36787944]])
numerator/denominator
# array([[ 0.26894142,  0.73105858],
         [ 0.26894142,  0.73105858]])

关于python - 一个 numpy 数组的 Softmax 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43290138/

相关文章:

Python,惰性列表

python - 使用 Wagtail 作为 API 层

c - 如何获取数组最后一个元素的值?

python - 如何在 Pandas 中填充行不为 NULL 的列名?

arrays - 如何创建二维以上的 Pandas 数据框?

python - 无法理解和使用 Statsmodels 的 SARIMAX `conf_int()` 输出

python - 创建新的Dataframe数据切片问题

arrays - 如何将数组传递给 bash shell 脚本?

Python:对象没有属性错误:一个数组

python - 根据出现对数组元素进行分组,保持顺序,获取第一个和最后一个索引