forked from burakbayramli/books
-
Notifications
You must be signed in to change notification settings - Fork 0
/
nntrnviz.m
49 lines (41 loc) · 1.4 KB
/
nntrnviz.m
1
function [wh,wo,es] = nntrnviz(dat,nrm,tgt,lr,its,hus)% [wh,wo,es] = nntrnviz(dat,nrm,tgt,lr,its,hus)% Visualize training of neural net by plotting surfaces after % each iteration.% It's special-cased for 3 outputs and 50 pts per output.% 2002-02-11 [email protected]% First iteration is different to intialize net[wh,wo,es] = nntrain(dat,nrm,tgt,lr,1,hus);ptsperop=50;uu=1:ptsperop;oo=ptsperop+[1:ptsperop];aa=(2*ptsperop)+[1:ptsperop];% Limits for gridsamplinglimits = [200 1100 600 1600];gridpts = 60;% 3D viewpointaz = 18;el = 44;for e = 1:its plot(dat(uu,1),dat(uu,2),'or',dat(oo,1),dat(oo,2),'ob',dat(aa,1),dat(aa,2),'og'); % Sample entire 2D surface of NN outputs [nnO,xx,yy] = nngridsamp(wh,wo,nrm,limits,gridpts,1); [nnU,xx,yy] = nngridsamp(wh,wo,nrm,limits,gridpts,2); [nnA,xx,yy] = nngridsamp(wh,wo,nrm,limits,gridpts,3); % Use contour to plot where their difference crosses zero hold on contour(xx,yy,nnO-max(nnU,nnA),[0 0]) contour(xx,yy,nnA-max(nnU,nnO),[0 0]) % Pretty good decision boundary. You can see the 'wrong' points % Add the actual surfaces defined by the outputs % (shifted down by -1 so 2D plane is at the top) surf(xx,yy,nnO-1) surf(xx,yy,nnU-1) surf(xx,yy,nnA-1) view(az,el); hold off pause; % Do the next iteration [wh,wo,esb] = nntrain(dat,nrm,tgt,lr,1,wh,wo); es = [es,esb];end