Folks,
Есть ли пример реализации простой функции softmax для N значений? Мне кажется, что-то вроде «детекторов на основе softmax» и т. Д., Но я просто хочу увидеть чистую, прямую реализацию C ++ softmax.
Какие примеры вы знаете?
Спасибо,
Я не видел библиотечной реализации softmax, хотя это не доказательство того, что она не существует. Достаточно просто, что люди просто пишут свои, когда им это нужно.
Для записи, функция softmax на u1
, u2
, u3
… это просто кортеж (exp(u1)/Z, exp(u2)/Z, exp(u3)/Z, ...)
где нормализующая константа Z
это просто сумма экспонент, Z = exp(u1) + exp(u2) + exp(u3) + ...
,
Обратите внимание, что добавление или вычитание константы из каждого u
оставляет результат без изменений, так как он эквивалентен умножению выше и ниже на один и тот же коэффициент. Таким образом, вы могли бы сделать расчет немного более численно хорошим, вычитая наибольшее значение среди u
«S; тогда самый большой срок exp(u)
будет 1, а все остальные что-то меньше, чем это.
Других решений пока нет …