Efficient implementation (via Fortran) of the softmax (aka multinomial logistic) function converting a set of numerical values to probabilities summing to 1.
Usage
softmax(x, v = NULL)
Value
Returns a matrix of the same dimension as x with values in the range \((0,1)\) that sum to 1 along the rows.
Arguments
x
a matrix of dimension \(n \times k\) of numerical values. If a vector is provided, it is converted to a single-row matrix.
v
an optional vector of length \(k\) of numerical values to be added to each row of x matrix. If not provided, a vector of zeros is used.
Author
Luca Scrucca
Details
Given the matrix x, for each row \(x_{[i]} = [x_1, \dots, x_k]\) (with \(i=1,\dots,n\)), the softmax function calculates
$$
\text{softmax}(x_{[i]})_j =
\dfrac{\exp{x_j + v_j}}{\sum_{l=1}^k \exp(x_l + v_l)}
\qquad \text{for } j = 1,\dots,k
$$