Википедия имеет следующий пример кода для 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
может ссылаться на элемент массива в числителе и охватывать все элементы в знаменателе?
[Примечание: Вопрос этот вопрос предположительно дублирует примерно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
.
]