【发布时间】:2018-10-31 21:44:10
【问题描述】:
维基百科有以下softmax 的示例代码。
>>> import numpy as np
>>> z = [1.0, 2.0, 3.0, 4.0, 1.0, 2.0, 3.0]
>>> softmax = lambda x : np.exp(x)/np.sum(np.exp(x))
>>> softmax(z)
array([0.02364054, 0.06426166, 0.1746813 , 0.474833 , 0.02364054 , 0.06426166, 0.1746813 ])
当我运行它时,它运行成功。我不明白如何阅读lambda 函数。尤其是参数x如何引用分子中的一个数组元素,并跨越分母中的所有元素?
[注:The question 这个问题大概重复了大约lambdas。这个问题不一定是关于lambda。它是关于如何阅读np 约定的。 @Paul Panzer 和 @Mihai Alexandru-Ionut 的答案都回答了我的问题。太糟糕了,我无法在回答问题时同时检查两者。
确认我理解他们的回答(并澄清我的问题是关于什么的):
-
x是整个数组(应该是因为数组作为参数传递)。 -
np.exp(x)返回每个元素x[i]替换为np.exp(x[i])的数组。调用这个新数组x_new。 -
x_new/np.sum(x_new)将x_new的每个元素除以x_new的总和。
]
【问题讨论】: