public static double LogSumExp(this double[] array) { double sum = Double.NegativeInfinity; for (int i = 0; i < array.Length; i++) sum = Special.LogSum(array[i], sum); return sum; } #endregion
public static double[] Softmax(double[] input, double[] result) { double sum = Special.LogSumExp(input); for (int i = 0; i < input.Length; i++) { result[i] = Math.Exp(input[i] - sum); } return(result); }