Levi-Heath's picture
Upload 16 files
62615d9 verified
raw
history blame contribute delete
828 Bytes
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