如何让 numpy.exp 既能处理数组又能处理标量?

How to get numpy.exp to work with an array as well as a scalar?

我正在做一项作业,要求我编写 Python 中的 sigmoid 函数。我对此很陌生,所以我有点了解 Sigmoid 函数的工作原理。

作业要求我对其进行编码,以便无论 z 是数组还是标量,该函数都能正常工作。我知道数组是什么,但不知道标量是什么。搜索它只产生了我不理解的数学术语。该作业还建议我使用 numpy.exp 来解决问题。无论如何,这就是我写的,它显然不起作用。我不确定我的逻辑是否有误,或者仅仅是因为我没有考虑标量与数组的关系。谁能帮助我了解那是什么或在哪里可以找到该信息?

这是代码:

def sigmoid(z): 
    '''
    Input:
        z: is the input (can be a scalar or an array)
    Output:
        h: the sigmoid of z
    '''
    
    ### START CODE HERE (REPLACE INSTANCES OF 'None' with your code) ###
    # calculate the sigmoid of z
    h = 1/1+np.exp(-z)
    ### END CODE HERE ###
    
    return h


# Testing your function 
if (sigmoid(0) == 0.5):
    print('SUCCESS!')
else:
    print('Oops!')

if (sigmoid(4.92) == 0.9927537604041685):
    print('CORRECT!')
else:
    print('Oops again!')

你必须用括号把分数的分母括起来,像这样:

 h = 1/(1+np.exp(-z))

当您忘记括号时,您实际上是在计算 1 除以 1,然后加上 np.exp(0)。这会将您带到 2,这就是为什么您的总和与您的 0.5 目标不匹配的原因。

标量是常规数字,与矩阵或数组相反。