使用python计算softmax激活函数

使用python计算softmax激活函数,python,numpy,softmax,Python,Numpy,Softmax,我试图编写一个方法来计算SoftMax激活函数,该函数以矩阵或数组作为输入,并将SoftMax函数应用于每一行 以下是我尝试过的: import numpy as np def softmaxSingle(x): e_x = np.exp(x - np.max(x)) return e_x / e_x.sum() def softmax( x): if np.shape(x)[0]>1: result=[[]]*np.shape(x)[0]

我试图编写一个方法来计算SoftMax激活函数,该函数以矩阵或数组作为输入,并将SoftMax函数应用于每一行

以下是我尝试过的:

import numpy as np
def softmaxSingle(x):
    e_x = np.exp(x - np.max(x))
    return e_x / e_x.sum()    

def softmax( x):
    if np.shape(x)[0]>1:
        result=[[]]*np.shape(x)[0]
        for i in range(len(result)):
            result[i]=list(softmaxSingle(x[i]))
        return list(result)
    e_x = np.exp(x - np.max(x))
    return e_x / e_x.sum()

当我尝试
SoftMax(x)
时,其中
x
是一个矩阵,它会运行(尽管我不知道它是否产生正确的答案)。当
x
只是一个列表时,它不起作用

您只需将
列表
转换为
np.数组
转换:

import numpy as np

def softmax(x):
    """Compute softmax values for each sets of scores in x."""
    if isinstance(x, list):
        x = np.array(x)
    e_x = np.exp(x - np.max(x))
    return e_x / e_x.sum()

但是“x-np.max(x)”方法不会用每行的最大值减去每行,而是用所有条目的最大值减去每行,可以吗?试试这个例子:a=[[1,2,3],[4,5,6]]print(a-np.max(a)),它的输出是:[-5-4-3][-2-10]@user42493你能给我一些示例输入吗?是的,它需要用矩阵的最大值减去每个元素,你不觉得吗?如果行是一个要求,那么您仍然可以这样做好,那么e_x.sum()呢?这给出了矩阵中所有项目的总和,但我们需要将每行e_x除以执行总和的文档中每行e_x?的总和:轴或轴。默认值axis=None将对输入数组的所有元素求和。如果轴为负,则从最后一个轴到第一个轴计数。