Близкие,
Есть ли пример реализации простой функции softmax для значений N? Мне кажутся такие вещи, как «детекторы на основе softmax» и т. д., но я просто хочу увидеть чистую, простую реализацию softmax на C++.
Какие примеры вы знаете?
Спасибо,
Близкие,
Есть ли пример реализации простой функции softmax для значений N? Мне кажутся такие вещи, как «детекторы на основе softmax» и т. д., но я просто хочу увидеть чистую, простую реализацию softmax на C++.
Какие примеры вы знаете?
Спасибо,
Я не видел библиотечной реализации softmax, хотя это не доказательство того, что ее не существует. Это достаточно просто, чтобы люди просто писали свои собственные, когда им это нужно.
Для справки, функция softmax для u1
, u2
, u3
... это всего лишь кортеж (exp(u1)/Z, exp(u2)/Z, exp(u3)/Z, ...)
, где нормализующая константа Z
представляет собой просто сумму экспонент Z = exp(u1) + exp(u2) + exp(u3) + ...
.
Обратите внимание, что добавление или вычитание константы из каждого u
оставляет результат неизменным, поскольку это эквивалентно умножению выше и ниже на один и тот же коэффициент. Таким образом, вы можете сделать вычисления более правильными в численном отношении, вычитая наибольшее значение из u
; тогда наибольший член exp(u)
будет равен 1, а все остальные - чем-то меньшим.
vector<T>
,array<T,N>
, некоторым массивом указателей или даже какой-то специфичной для библиотеки вещью, такой как TensorFlow. Если вы покажете, как представляете свою проблему, что вы уже пробовали и где точно застряли, вам поможет получить хороший ответ. - person alter igel   schedule 19.10.2018