| | function []=fun_spoke_plot(vect_image,true_label,Ws,bs,spr,Wt,bt,tpr,nmb_of_labels) |
| | |
| | |
| | lb=true_label; |
| | nml=nmb_of_labels; |
| | nn=3; |
| | clr=colormap(cool(nn*(nml+1))); |
| | lbnm={'a','b','c','d','e','f','g','h','i','j','k','l','m','n',... |
| | 'o','p','q','r','s','t','u','v','w','x','y','z'}; |
| | gy=.33; |
| | grdcl='w'; |
| | grlwt=2; |
| | msz=4; |
| | redge=1.1; |
| |
|
| | figure(1) |
| | hold off |
| |
|
| | subplot(1,2,1) |
| | prediction=fun_prediction(vect_image,Ws,bs); |
| | predicted=prediction.A_end; |
| | [~,nmd]=size(predicted); |
| | offst=.07; |
| | |
| | inc=2*pi/nml; |
| | tht=(0:(nml-1))*inc; |
| | A=zeros(2,nmb_of_labels); |
| | for ii=1:nml |
| | A(:,ii)=[tht(ii);1]; |
| | end |
| | radii=1./abs(prediction.predicted.distance+offst); |
| | |
| | pi_pt=zeros(2,nmd); |
| | for mm=1:nmd |
| | pi_pt(:,mm)=A*predicted(:,mm); |
| | end |
| |
|
| | aa=pi_pt(1,:); |
| | theta_all=aa(:); |
| | |
| | |
| | |
| | |
| | |
| | for kk=1:nml |
| | idx=(lb==kk); |
| | theta=theta_all(idx); |
| | rho=radii(idx); |
| | |
| | p=polarplot(theta,rho/max(rho)); |
| | hold on |
| |
|
| | p.Marker = 'square'; |
| | p.MarkerSize = msz; |
| | p.LineStyle = "none"; |
| | p.Color = clr(nn*kk,:); |
| | p.MarkerFaceColor = clr(nn*kk,:); |
| | end |
| | ax = gca; |
| | ax.RTickLabel = {}; |
| | ax.ThetaTick = rad2deg(tht); |
| | ax.ThetaTickLabel = lbnm; |
| | axis([-inf, inf, 0,redge]) |
| | set(ax,'Color',[gy gy gy]) |
| | set(ax,'GridColor',grdcl,'LineWidth',grlwt) |
| |
|
| | |
| | title("SGD - trained Model (" + round(spr,2) + "%)",'fontsize',14) |
| |
|
| | |
| | subplot(1,2,2) |
| | prediction=fun_prediction(vect_image,Wt,bt); |
| | predicted=prediction.A_end; |
| | [~,nmd]=size(predicted); |
| | |
| | |
| | inc=2*pi/nml; |
| | tht=(0:(nml-1))*inc; |
| | A=zeros(2,nmb_of_labels); |
| | for ii=1:nml |
| | A(:,ii)=[tht(ii);1]; |
| | end |
| | radii=1./abs(prediction.predicted.distance+offst); |
| | |
| | pi_pt=zeros(2,nmd); |
| | for mm=1:nmd |
| | pi_pt(:,mm)=A*predicted(:,mm); |
| | end |
| |
|
| | aa=pi_pt(1,:); |
| | theta_all=aa(:); |
| | |
| | |
| | |
| | |
| | |
| | for kk=1:nml |
| | idx=(lb==kk); |
| | theta=theta_all(idx); |
| | rho=radii(idx); |
| | |
| | p=polarplot(theta,rho/max(rho)); |
| | hold on |
| |
|
| | p.Marker = 'square'; |
| | p.MarkerSize = msz; |
| | p.LineStyle = "none"; |
| | p.Color = clr(nn*kk,:); |
| | p.MarkerFaceColor = clr(nn*kk,:); |
| | end |
| | ax = gca; |
| | ax.RTickLabel = {}; |
| | ax.ThetaTick = rad2deg(tht); |
| | ax.ThetaTickLabel = lbnm; |
| | axis([-inf, inf, 0,redge]) |
| | set(ax,'Color',[gy gy gy]) |
| | set(ax,'GridColor',grdcl,'LineWidth',grlwt) |
| |
|
| | |
| | title("GDT - trained Model (" + tpr + "%)",'fontsize',14) |
| |
|
| | set(gcf,'Position',[10 80 900 440]) |
| | |
| | |
| | sgtitle('Confusion Wheel for Training', 'fontsize', 16) |
| |
|
| | function out=fun_prediction(vect_image,W, b) |
| | |
| | |
| | nmb_of_hidden_layers=length(fieldnames(W))-1; |
| | W1=W.LayerName1; |
| | W2=W.LayerName2; |
| | b1=b.LayerName1; |
| | b2=b.LayerName2; |
| |
|
| | a_0=vect_image; |
| | |
| | |
| | nmb_labels=length(b2); |
| | z1=W1*a_0+b1; |
| | [a1,~]=fun_activation(z1); |
| | z2=W2*a1+b2; |
| |
|
| | if nmb_of_hidden_layers==1 |
| | [a2,~]=fun_softmax(z2); |
| | predicted_vector=a2; |
| | else |
| | W3=W.LayerName3; |
| | b3=b.LayerName3; |
| | nmb_labels=length(b3); |
| | [a2,~]=fun_activation(z2); |
| |
|
| | z3=W3*a2+b3; |
| | [a3,~]=fun_softmax(z3); |
| | predicted_vector=a3; |
| | end |
| | out.A_end=predicted_vector; |
| | out.predicted=fun_predicted_vector_2_label(predicted_vector,nmb_labels); |
| | end |
| | end |