File size: 828 Bytes
62615d9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
function [out1,out2]=fun_softmax(S)
%
% Column-wise normaliztion
%
[sz1,sz2]=size(S);
A=zeros(sz1,sz2);
B=zeros(sz1-1,sz1,sz2);
for zz=1:sz2
    [aaa,bbb]=softmax(S(:,zz));
    A(:,zz)=aaa;
    B(:,:,zz)=bbb;
end
out1=A;
out2=B;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    function [y,dy]=softmax(S)
        %         bb=1e+2;
        bb=1;
        S=S/bb;
        aa=exp(S);
        sm=sum(exp(S))+1e-16;
        y=aa./sm;

        [n,~]=size(S);
        m=n-1;
        dy=zeros(m,n);
        for i=1:m
            for j=1:n
                if j~=i
                    dy(i,j)=-exp(S(i)).*exp(S(j));
                else
                    dy(i,j)=exp(S(i)).*sm-exp(S(i)).*exp(S(j));
                end
            end
        end
        dy=dy/sm^2/bb;
    end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
end