第一步,求出最大值max
第二步,由exp表达式将各个值转化为0~1之间的数 x[i] = exp(x[i] - max)
第三步,求sum,归一化。
01.void LogisticRegression::softmax(double *x) {
02.
03. double max = 0.0;
04. double sum = 0.0;
05.
06. for(int i=0; i<n_out; i++) if(max < x[i]) max = x[i];
07. for(int i=0; i<n_out; i++) {
08. x[i] = exp(x[i] - max);
09. sum += x[i];
10. }
11.
12. for(int i=0; i<n_out; i++) x[i] /= sum;
13.}